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小时编写出函数

浙公网安备 33010602011771号