快速排序

来源:互联网 发布:python 日志模块 编辑:程序博客网 时间:2024/06/07 19:03
#include <stdio.h>#include <stdlib.h>/* 功能:快速排序描述:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。*/int quicksort(int a[],int left,int right);int main(int argc, char *argv[]) {    int a[100];    int i,j,n;    //读入数据    scanf("%d",&n);    for(i=1;i<=n;i++)    scanf("%d",&a[i]);    quicksort(a,1,n);//快速排序调用    //输出排序后的结果    for(i=1;i<=n;i++)    printf("%d",a[i]);    return 0;}int quicksort(int a[],int left,int right){//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1    if(a=NULL||left>right)        return -1;    int i = left;    int j = right;    int x = a[i];    while(i < j){        while(i<j&&a[j]>x)            j--;        if(i<j)            a[i] = a[j++];        while(i < j&&a[i] < x)            i++;        if(i<j)            a[j--] = a[i];        }    a[i] = x;    quicksort(a,left,i-1);    quicksort(a,i+1,right);}

注1:取中间数为参考
注2:该函数有些问题,需调整

0 0