快速排序

来源:互联网 发布:窥孔优化 编辑:程序博客网 时间:2024/06/13 00:43
#include "stdio.h"int partion(int a[], int left, int right){    //将小于数组a[]第一个元素的元素移到左区间,将大于a[0]的元素移到右区间    int i = left;    int j = right;    int temp = a[left];    while(i<j)      {        while(i<j && a[j]>temp)  //如果右边元素大于参照元素            j--;    //右面区间下标左移        a[i] = a[j];    //将右边小于参照元素的元素移到左区间        while(i<j && a[i]<temp)   //如果左边元素小于参照元素            i++;   //左面下标右移        a[j] = a[i];    //将左边大于参照元素的元素移到右区间    }    a[i] = temp;    //将参照元素放置到合适的位置    return i;    //返回参照元素下标}void quickSort(int a[], int left, int right){    if(left<right) //递归结束条件    {        int mid = partion(a, left, right);          quickSort(a, left, mid);    //对左段区间递归排序         quickSort(a, mid+1, right);   //对右段区间递归排序    }}int main(){    int a[100];    int len;    int i;    printf("输入元素个数:");    scanf("%d", &len);    for(i=0; i<len; i++)        scanf("%d", &a[i]);    quickSort(a, 0, len-1);    for(i=0; i<len; i++)        printf("%d ", a[i]);    printf("\n");    return 0;}
0 0
原创粉丝点击