数据结构实验之排序一:一趟快排

来源:互联网 发布:3d扫描数据采集超声波 编辑:程序博客网 时间:2024/04/30 03:25


这道题是利用快排的一趟排序的思想,将比枢轴大的均放在它的右边,将比枢轴小的均放在它的左边。

代码如下:

#include <stdio.h>
int a[100000];
int main(){
    int n,i,j,p,d;
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        p=a[0];//将第一个数组元素作为枢轴;
        i=0;
        j=n-1;
        while(i<j){
            while(i<j&&a[j]>=p)
                j--;
            d=a[i];//将比p小的交换到低的一端;
            a[i]=a[j];
            a[j]=d;
            while(i<j&&a[i]<=p)
                i++;
            d=a[i];//将比p大的交换到低的一端;
            a[i]=a[j];
            a[j]=d;
        }
        for(i=0;i<n;i++){
            if(i==0)
                printf("%d",a[i]);
            else
                printf(" %d",a[i]);
            }
        printf("\n");
    }
    return 0;
}

0 0
原创粉丝点击