Quick sort 快速排序
来源:互联网 发布:java从入门到放弃 pdf 编辑:程序博客网 时间:2024/05/01 12:35
维基百科快速排序:https://en.wikipedia.org/wiki/Quicksort
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
排序动画:
示例:
总结分为三步:
1)先从数列中取出一个数作为基数。
2)将比这个数大的数全部放到右边,小于等于它的数全部放在左边。
3)再对左右区间重复第二步,直到各个区间只剩下一个数。
代码:
#include <stdio.h>void quick_sort(int n[], int left, int right){int i = left;int j = right;int temp = n[left]; //base numberif (left < right) {while(i < j) {while(i < j && n[j] >= temp) //find less than temp number form right to leftj--;if (i < j) {n[i] = n[j];i++;}while(i < j && n[i] < temp) //find big than temp number form left to righti++;if (i < j) {n[j] = n[i];j--;}}n[i] = temp; //swap base numberquick_sort(n, left, i - 1);quick_sort(n, i + 1, right);}}int main(){int number[] = {3, 7, 8, 5, 2, 1, 9, 5, 4};int len;int i;len = sizeof(number)/sizeof(number[0]);quick_sort(number, 0, len - 1);printf("\n");for (i = 0; i < len; i++) {printf("%d ", number[i]);}printf("\n");}
0 0
- 快速排序 Quick Sort
- 快速排序(Quick sort)
- quick sort 快速排序
- 快速排序(Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort (快速排序)
- 快速排序(Quick-Sort)
- 快速排序Quick sort
- 快速排序 (Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort 快速排序
- 快速排序(quick sort)
- 快速排序 quick sort
- 快速排序 quick sort
- 快速排序 quick sort
- Quick Sort快速排序
- 快速排序(quick-sort)
- quick sort 快速排序
- 一道简单OJ题目的五种编程语言
- SVN trunk、branch、tag的用法
- python strip()
- lower_bound函数
- RAC中经常使用的运算符 - 感谢听榆大叔的整理
- Quick sort 快速排序
- 浅析C++中的智能指针
- XPATH的几个常用函数
- Processing 教程(14) - 渐进地认识While Loop!
- LAMP实现一个简易网页应用
- ubuntu下openjdk环境配置
- new与malloc()的区别
- Unity人工智能学习—确定性AI算法之追踪算法三
- 小知识数组超出边界