标签:code while nbsp center 冒泡 i++ auto http display
快速排序方法是对冒泡排序的一种改进,基本思想是将待排序序列分成两部分,使其中一部分的记录都比另一部分的小,随后分别对这两部分再进行重复划分,最终使得整个序列有序。
该方法的基本思想是:(分治策略)
设置low,high两个指针,分别指向序列的第一个记录和最后一个记录。此时low指向了序列的第一个记录,也就是枢轴的位置。
以序列{49,38,65,97,76,13,27,49,55,04}为例,第一趟排序过程如下图所示。图中黑线圈代表指针low,虚线圈代表指针high。
第一趟排序的过程
第二趟排序的过程
第三趟排序的过程
经过三趟排序之后,整个序列就已经排序完成。
在CSDN的一篇博客中,作者将快速排序算法总结为:挖坑填数+分治法。(http://blog.csdn.net/morewindows/article/details/6684558)
挖坑填数:
1 //快速排序 2 //arr:数组首地址;l:low指针位置;r:high指针位置 3 void quicksort(int *arr, int l, int r) 4 { 5 if (l < r) 6 { 7 int i = l, j = r, x = arr[l]; 8 while (i < j) 9 { 10 while (i < j && arr[j] >= x) // 从右向左找第一个小于x的数 11 j--; 12 if (i < j) 13 arr[i++] = arr[j]; 14 15 while (i < j && arr[i] < x) // 从左向右找第一个大于等于x的数 16 i++; 17 if (i < j) 18 arr[j--] = arr[i]; 19 } 20 arr[i] = x; 21 quicksort(arr, l, i - 1); // 递归调用 22 quicksort(arr, i + 1, r); 23 } 24 }
标签:code while nbsp center 冒泡 i++ auto http display
原文地址:http://www.cnblogs.com/jmliao/p/6707683.html