标签:
1 /* 2 快速排序 3 1.先从数列中取出一个数作为基准数。 4 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 5 3.再对左右区间重复第二步,直到各区间只有一个数。 6 时间复杂度平均是O(nlogn),最差情况为n^2; 7 */ 8 void QuickSort(int* nums,int first ,int last) 9 { 10 if (first<last) 11 { 12 int i = first; 13 int j = last; 14 int x = nums[i]; 15 while (i<j) 16 { 17 while (i<j&&nums[j]>=x)//右边的数大于等于种子基数,不作处理 18 j--; 19 if(i<j) 20 nums[i++] = nums[j];//赋值给左边的坑 21 while (i<j&&nums[i]<x) 22 i++; 23 if(i<j) 24 nums[j--] = nums[i];//左边的值赋值给右边的坑 25 26 } 27 nums[i] = x; 28 QuickSort(nums,first,i-1); 29 QuickSort(nums,i+1,last); 30 } 31 }
原文地址:http://blog.csdn.net/morewindows/article/details/6684558
标签:
原文地址:http://www.cnblogs.com/LaplaceAkuir/p/5779101.html