冒泡排序

冒泡排序算是最基础的一种排序方式了。

它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!

冒泡排序在数据量少的时候使用比较合适。冒泡排序的时间复杂度是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))
原文地址:https://www.cnblogs.com/xswl/p/10082112.html