一步一步复习数据结构和算法基础-快速排序

来源:互联网 发布:悦读家园网络平台 编辑:程序博客网 时间:2024/05/19 03:46
#include <stdio.h>#include <stdlib.h>int QuickPass(int *array,int low,int high){//pivotkey记录枢轴的关键字//low 和 high 是指示指针//经过一次排序之后枢轴左边的元素小于枢轴,枢轴右边的元素大于枢轴int pivotkey;*array = *(array+low);pivotkey = *(array+low);while(low < high)//如果满足条件{while(low < high && *(array+high) >= pivotkey)--high;*(array+low) = *(array+high);while(low<high && *(array+low)<=pivotkey)++low;*(array+high)=*(array+low);}*(array+low)=*array;//枢轴元素归位return low;}void QSort(int *array,int low,int high){int pivotloc;if(low < high)//low指针低于high指针{pivotloc = QuickPass(array,low,high);//获取枢轴位置QSort(array,low,pivotloc-1);//左半边递归QSort(array,pivotloc+1,high);//右半边递归}}void QuickSort(int *array,int length){QSort(array,1,length);}int main(){int *array,length,i;scanf("%d",&length);array = (int*)malloc(sizeof(int)*(length+1));for(i=1;i<=length;i++)scanf("%d",array+i);QuickSort(array,length);for(i=1;i<=length;i++)printf("%d ",*(array+i));return 0;}