码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2016-08-17 11:58:20      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!