这种排序方式是对于冒泡排序的一种改进,它采用分治模式,将一趟排序的数据分割成独立的两部分,其中一组数据的每个值都小于另一组。
每一趟在进行分类的同时实现排序。
其中每一趟的模式通过设置key当基准元素,key的选择可以是数据的第一个,也可以是数据的最后一个。
这里以每次选取数据的第一个为例:另外,关于C/C++编程学习,小编给大家提供一个学习.交.流群,欢迎到访:569268376具体代码实现:#include<stdio.h>#define N 6int fun(int arr[],int low,int high){int key;key=arr[low];while(low<high){while(low<high && arr[high]>=key)high–;if(low<high)arr[low++]=arr[high];while(low<high && arr[low]<=key)low++;if(low<high)arr[high–]=arr[low];}arr[low]=key;return low;}void quick_sort(int arr[],int start,int end){int pos;if(start<end){pos=fun(arr,start,end);quick_sort(arr,start,pos-1);quick_sort(arr,pos+1,end);}}int main(){int i;int arr[N]={32,12,7,78,23,45};for(i=0;i<N;i++){printf(“%d “,arr[i]);}printf(“n”);quick_sort(arr,0,N-1);for(i=0;i<N;i++){printf(“%d “,arr[i]);}return 0;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)