冒泡排序
冒泡排序算是最基础的一种排序方式了。
它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!
冒泡排序在数据量少的时候使用比较合适。冒泡排序的时间复杂度是O(N2)
C++
1 #include<iostream>
2 using namespace std;
3
4 template<class T>
5 int length(T& arr)
6 {
7 return sizeof(arr) / sizeof(arr[0]);
8 }
9
10 void print(int * const src ,const int src_lenght)
11 {
12 for(int i = 0 ;i<src_lenght;i++)
13 cout<<src[i]<<" ";
14
15 cout<<endl;
16 }
17
18 int * Bubble_sort(int * const src ,const int src_lenght)
19 {
20 int tmp;
21 for(int i = 0;i<src_lenght-1;i++)
22 for(int j = 0;j<src_lenght-i-1;j++)
23 if(src[j]>src[j+1])
24 {
25 tmp = src[j];
26 src[j] = src[j+1];
27 src[j+1] = tmp;
28 //print(src ,src_lenght);
29 }
30 return src;
31 }
32
33 int main()
34 {
35 int a[10] = {161,-6,24,31,44,9,0,1,-4,65};
36 Bubble_sort(a,length(a));
37 print(a,length(a));
38
39 return 0;
40 }
python
1 def bubbleSort(src):
2 for i in range(len(src) - 1):
3 for j in range(len(src) - 1 - i):
4 if (src[j] > src[j + 1]):
5 src[j], src[j + 1] = src[j + 1], src[j]
6 return src
7
8 a = [6,8,1,0,3,4,5]
9 print(bubbleSort(a))