//选择排序void chooseSort(unsigned char *list, int length){ int i,j,temp,minIndex; //要遍历的次数 for(i = 0; i < length - 1; i++) { //设当前最小值序号 minIndex = i; //把序列后面的数据作比较 for(j = i + 1; j < length; j++) { if(list[minIndex] > list[j]) { minIndex = j; } } temp = list[i]; list[i] = list[minIndex]; list[minIndex] = temp; }}//冒泡排序void bubbleSort(unsigned char *list, int length){ int i,j,temp; for(i = 0; i < length; i++) { for(j = 0; j < length - i - 1; j++) { if(list[j+1] < list[j]) { temp = list[j + 1]; list[j + 1] = list[j]; list[j] = temp; } } }}//快速排序void quickSort(unsigned char *list, int left, int right){ if(left < right) { //递归调用quickSort int i = division(list,left,right); quickSort(list, left, i-1); quickSort(list, i+1, right); }}int division(unsigned char *list,int left,int right){ if(left>right) return -1; int base = list[left]; //任何情况下左指针比右指针要小 while(left < right) { //从右指针向左移动,找到比base要大(或等于)的值 while((left < right) && (list[right] >= base)) right -= 1; //把该值替代左指针指向的值 list[left] = list[right]; //从左指针向右移动,找到比base要小(或等于)的值 while((left < right) && (list[left] <= base)) left += 1; //把该值替代右指针的值 list[right] = list[left]; } //把base插入当前左指针指向的地方 list[left] = base; return left;}
测试后觉得 快速排序 最快。