c语言的快速排序

xiaoxiao2021-02-28  67

#include<stdio.h> void quitSort(int a[],int left,int right){     int i=left,j=right;//定义一个左指和右值     int temp=a[i];//首先得到a[i]的值     if(i<j){//只有当i比j小的时候才进入下面的循环         while(i!=j){//当左指和右指相同时退出循环             while(j>i&&temp<=a[j]){                 j--;//右指--             }             if(i<j){                 a[i++]=a[j];//将比temp小的值放到当前空位上,左指加1             }             while(i<j&&temp>=a[i]){                 i++;//左指++             }             if(i<j){                 a[j--]=a[i];//填补之前右边的空位             }         }         a[i]=temp;//最后将temp填入最后的空位         quitSort(a,left,i-1);//左值继续快排         quitSort(a,i+1,right);//右值继续快排     } } int main(){     int b=20;//定义存放的元素的最大值     int a[1005];//定义数组     int i=0;//计数器     while(b--){         a[i++]=rand()0;//0-100     }     b=i;//恢复b的值     i=0;//再次初始化i的值     quitSort(a,0,20);     while(b--){         printf("%d ",a[i++]);//打印输出     }     return 0; }
转载请注明原文地址: https://www.6miu.com/read-82195.html

最新回复(0)