对一组数据进行冒泡排序的方法是,比较相邻两个数据大小,保证较大的排在后面,然后对未排序的数据继续进行比较大小,保证最大的冒泡到最后面。
比如:3 ,7 ,9 ,10, 0这一组数据:
第一次排序:3,7,9,0,10,将最大的10交换到最后面,然后未排序的数据为3,7,9,0,对未排序的数据继续进行比较大小排序
第二次排序:3,7,0,9,将最大的9交换到最后面,然后未排序的数据为3,7,0,对未排序的数据继续进行比较大小排序
第三次排序:3,0,7,将最大的7交换到最后面,然后未排序的数据为3,0,对未排序的数据继续进行比较大小排序
第四次排序:0,3,将最大的3交换到最后面,排序完成。
可以看到,对于数据大小为n的最大需要经过n -1次排序,才可以排序完成。
数据对于C/C++来说存储在数组中,python存储在列表中,排序过程完全一样。
对一组数据的前n个数排序,代码如下:
C++方法:
# include <iostream>
using namespace std;
#define ARRAY_A_LEN 7
void bubble_sort(int a[], int n )
{
if(n > ARRAY_A_LEN)
{
cout << "the array over!" <<endl;
return;
}
int i ,j;
int tmp = 0;
for(i = 0; i < n - 1; i++)
{
for(j = 0; j < n -1 -i; j++)
{
tmp = a[j + 1];
if(a[j + 1] < a[j])
{
a[j + 1] = a[j];
a[j] = tmp;
}
}
}
return;
}
void main()
{
int k;
int test[ARRAY_A_LEN] = {3 ,7 ,9 ,10, 0, 5 ,6 };
bubble_sort(test, 6);
for(k =0; k < ARRAY_A_LEN; k++)
{
cout << test[k] << " ";
}
cout << endl;
return;
}
python代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def bubble_sort(list, n):
if (n > len(list)):
return
for i in range(0, n - 1):
for j in range(0, n - i -1):
if list[j] > list[j + 1]:
list[j], list[j+1] = list[j+1], list[j]
return
a = [1,4,5,7,3,2,6,3,9]
bubble_sort(a,6)
print a