2019年春季学期第四周作业

基础题

7-2 选择法排序 (20 分)

本题要求将给定的n个整数从大到小排序后输出。

输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6 

输出样例:

7 6 5 1 

快速排序实验代码

 

 1 void quick_sort(int *a, int left, int right)
 2 {
 3     int j, i, tem;
 4     
 5     
 6     //左标不能大于右标
 7     if(left>right)
 8     {
 9         return;
10     }
11     
12     //从左开始第一个作为参考值
13     tem = a[left];
14     i = left;
15     j = right;
16     
17     //左右两边未相遇时,持续交换
18     while(j!=i)
19     {
20         //右边比参考大,说明位置不正确,停下等待交换
21         while(a[j]>=tem)
22         {
23             j--;
24         }
25 
26         //左边比参考小,说明位置不正确,停下等待交换
27         while(a[i]<=tem)
28         {
29             i++;
30         }
31         //右边不能超过右边
32         if(j>i)
33         {
34             //将两个位置不正确的值交换位置
35             a[j] = a[i];
36             a[i] = tem;
37         }
38     
39     }
40     //递归处理子数组
41     quick_sort(a, left, j+1);
42     quick_sort(a, i+1, right);
43 }

 

设计思路

 

本题调试过程碰到问题及解决办法

选择法排序速度过慢,因此选择快速排序答题

运行结果截图

 

 

 学习时间

快速排序的学习时间花费较多,约5小时编写出函数

posted @ 2019-06-26 22:09  harsonyoung  阅读(82)  评论(0)    收藏  举报