几种排序算法
1. 冒泡排序:比较前后两个相邻的元素,如果大于则进行交换,这样每次遍历一篇数组后,最大的一个数据就沉到了数组的N-1位置上。
两种改进:a. 如果当前遍历,没有发生交换,则已经有序;b. 记录最后发生数据交换的位置i,这个位置之后的数据显然已经有序,则下一次遍历只需要对i之前的数据冒泡即可。
void BubbleSort3(int a[], int n) { int j, k; int flag; flag = n; while (flag > 0) { k = flag; flag = 0; for (j = 1; j < k; j++) if (a[j - 1] > a[j]) { Swap(a[j - 1], a[j]); flag = j; } } }
冒泡排序的效率较低,数据规模较小时,可以使用。
2. 直接插入排序是将数据插入到已经排好序的数组中,直接选择排序是从后面未排序的数组中选择一个最小的,append到前面已经排序的后面。
http://blog.csdn.net/morewindows/article/details/6665714