3491=数据结构实验之排序八:快速排序

Posted angfe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3491=数据结构实验之排序八:快速排序相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 void sort(int a[],int left,int right)//可以理解为一个区域的数据和左、右端点。
 3 {
 4     int temp=a[left],i=left,j=right;//temp的作用是将一个数值储存起来,因为两个数值无法做到直接交换,要有一个中间变量。
 5     if(i>=j)return;//当右端点在左端点左边或者重合时结束。
 6     while(i<j)
 7     {
 8         while(i<j&&a[j]>=temp)//最左边是储存的点,因为要从右边开始,把已经储存的点给覆盖。
 9             j--;//从右边开始找一个比啊a[left]小的数。
10         a[i]=a[j];//将这个数放置在a[left]左边。
11         while(i<j&&a[i]<=temp)//总体结束时i=j。
12             i++;//从左边开始找一个比啊a[left]大的数。
13         a[j]=a[i];//将这个数放置在a[left]右边。
14     }
15     a[i]=temp;
16     sort(a,left,i-1);
17     sort(a,i+1,right);//递归的调用,第i个数作为中间数固定不动。
18 }
19 int main()
20 {
21     int i,n;
22     int a[100000];//题目要求的数组大小。
23     while(scanf("%d",&n)!=EOF)
24     {
25         for(i=0; i<n; i++)
26         {
27             scanf("%d",&a[i]);
28         }
29         sort(a,0,n-1);
30         for(i=0; i<n; i++)
31         {
32             if(i!=0)printf(" ");
33             printf("%d",a[i]);
34         }
35         printf("
");
36     }
37     return 0;
38 }

 

以上是关于3491=数据结构实验之排序八:快速排序的主要内容,如果未能解决你的问题,请参考以下文章

实验八--排序算法

快速排序-浙大版《数据结构学习与实验指导(第2版)》-基础实验7-2.3:德才论

[NEFU锐格 数据结构]实验八 排序表有关的操作

SDUT 3399 数据结构实验之排序二:交换排序

SDUT-3398_数据结构实验之排序一:一趟快排

SDUT-3399_数据结构实验之排序二:交换排序