冒泡排序
设数组长度为n,按照从小到大排序
1:从第一个数开始,比较相邻的前后两个数字,如果前面数据大于后面数据,交换两个数据;否则继续比较
2:当从data[0]遍历到data[n-1]后,最大的数字沉在data[n-1]的位置,即数组末尾;
3:n=n-1,重复上面两步,直到n=0。
void BubbleSort1(int data[],int length) { for(int i = 0; i < length; i++) { for(int j = 1; j < length-i; j++) { if(data[j-1] > data[j]) { Swap(data[j-1],data[j]); } } } }
优化1:设置flag,如果某次没有交换发生,说明排序已经完成;如果交换,设置flag=true
用k表示也要比较的次数,每次经过一次排序,最大的n沉到最后,k--,那么下一次只要比较n之前的数组,n之后的已经有序
优化2:有10个数的数组,如果经过几次排序,后边的6个数字已经有序,那么下次排序,只要从第一个开始到第四个就OK,不需要继续比较后边的6个