快速排序

来源:互联网 发布:centos改为中文 编辑:程序博客网 时间:2024/06/14 05:02
/*快速排序*/
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


#include<stdio.h>int Division(int a[], int left, int right)/*分割*/{int base = a[left];/*我们以第一个元素为基准*/ while(left < right)/*直到left == right*/{while(left < right && a[right] > base)/*如果大于基元素,则不需要交换,往前继续搜索*/--right;a[left] = a[right];/*一直找知道找到比base小的*/while(left < right && a[left] < base)/*从左向右找,找比base打的元素*/++left;a[right] = a[left];}a[left] = base;return left;}/*第一趟排序将比基元素小的放在基元素前面,比基元素打的元素放在基元素后面*/void QuickSort(int a[], int left, int right){int i;if(left<right){i=Division(a,left,right);QuickSort(a,left,i-1);QuickSort(a,i+1,right);}}int main(){int i = 0;int a[] = {6,2,7,3,8,9};QuickSort(a, 0, 6);for(i = 0; i < 6; i++){printf("%d ",a[i]);}return 0;}


0 0
原创粉丝点击