巧妙利用快速排序法的原理求一个数组中的第10大元素
来源:互联网 发布:校园网络安全教育 编辑:程序博客网 时间:2024/05/16 05:06
//快速排序法int QuickSort_process3(int *a, int low, int high){int l, h, temp;l = low;h = high;temp = a[low];while (l < h){while (l< h&&a[h] >= temp)--h;if (l < h)a[l] = a[h];while (l < h&&a[l] < temp)++l;if (l < h)a[h] = a[l];}a[h] = temp;return h;}void QuickSort3(int *a, int low,int high){int pos;if (low < high){pos = QuickSort_process3(a,low,high);QuickSort3(a,low,pos-1);QuickSort3(a,pos+1,high);}}int getTop_N_Numbers(int *a,int n){int pos, curpos, e;do{printf("Please input a numbers(less than %d and bigger than 0).\n", n);scanf("%d",&e);} while (!(e<=n&&e>=1));pos = n - e;/*在一个从小到大排序的数组中,最大第e个数的下标恰好是n-e*/curpos = QuickSort_process3(a, 0, n - 1);/*一趟快排结束时,肯定会有一个已经确定了位置的数,返回它的下标*/while (1){if (curpos == pos){/*当要找的第几最大的数的位子已经确定后,说明,比它还要大的数也已经确定了,就不再排序了,直接返回*/break;}else if (curpos < pos){/*在后半部找*/curpos = QuickSort_process3(a,curpos+1,n-1);}else{/*在前半部分找*/curpos = QuickSort_process3(a,0,curpos-1);}}return pos;}void show_TopN_numbers(int *a,int n){int k = getTop_N_Numbers(a, n);int i;printf("The Top %d numbers are :\n",n-k);for (i = k; i < n; ++i)printf("%d ",a[i]);printf("\n");}
0 0
- 巧妙利用快速排序法的原理求一个数组中的第10大元素
- 利用快速排序思想求数组第k大元素
- 求两个排序数组的第K大元素--求全排列的第K大元素
- 利用冒泡法实现一个随机数组中的元素排序
- 求一个很大的数组(乱序)排序后从第i大到第j大之间的所有元素,并且这些元素之间要求有序
- 求两个已排序的数组中所有元素的第K大(小)
- 利用快速排序中的切分函数寻找数组主元素
- java实现通过快速排序来查找数组中第n大的元素
- 快速找出第K大的元素 (快速排序)
- 利用快速排序思想找出数组中第K大的数
- 求数组中第2大的元素
- 求数组中第n大(小)的元素
- 找包含N个元素的数组里第K大的元素(引申:快速排序、找中位数、找前K大的元素)的时间复杂度
- 快速排序求第k小元素
- # 利用es6的新特性巧妙实现JavaScript中的数组求最大值问题
- 求一个整型数组的第二大元素的下标
- 快速排序搜索一个数组中第N大的数字
- 求一个数组中第二大的元素
- 深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理
- 考研数据结构与算法之树的生成和遍历(2)
- 6.11 最近的一些考试
- IP地址分类
- 6/11 新表格制作
- 巧妙利用快速排序法的原理求一个数组中的第10大元素
- java程序设计的基本原则
- 多功能筛选
- POJ 1392 Ouroboros Snake(数位欧拉:输出路径)
- jQuery的attr与prop
- jquery实现iframe自适应高度
- LeetCode OJ平台上的Climbing Stairs题目用java迭代解决
- android 后台长时间执行周期性定时任务 解决方案收集
- 股市二十年记忆【一】