日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

發(fā)布時(shí)間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

)輸出前k大的數(shù)(分治法/局部快速排序):給定一個(gè)數(shù)組,統(tǒng)計(jì)前k大的數(shù)并且把這k個(gè)數(shù)從大到小輸出。

[輸入]

第一行包含一個(gè)整數(shù)n,表示數(shù)組的大小。

第二行包含n個(gè)整數(shù),表示數(shù)組的元素,整數(shù)之間以一個(gè)空格分開。第三行包含一個(gè)整數(shù)k。k < n。

[輸出]

從大到小輸出前k大的數(shù),每個(gè)數(shù)一行。

[樣例輸入]

10

4 5 6 9 8 7 1 2 3 0

5

[樣例輸出]

9

8

7

6

5?

#include<iostream> #include<stdio.h> #include<stdlib.h> int a[1000]; void quick_sort(int a[], int start, int end) {if (start<end){int s = a[start];int i = start;int j = end;//剛開始排序從右向左查找才可以while (i<j){//從右向左查找第一個(gè)小于s的值與a[0]交換while (i<j&&a[j] >= s)j--;if (i<j)a[i++] = a[j];//把a(bǔ)[j]的值給a[i],并讓i向后走一位//從左向右查找第一個(gè)大于等于s的值與a[0]交換while (i<j&&a[i]<s)i++;if (i<j){a[j--] = a[i];//把a(bǔ)[i]的值給此時(shí)s所在的地址,并讓j向前退一位}}a[i] = s;//因?yàn)樵谥暗慕粨Q值過程中a[i]的值已經(jīng)不是最初的值,所以要變回來quick_sort(a, start, i - 1);//排序樞軸前數(shù)列quick_sort(a, i + 1, end);//排序樞軸后數(shù)列} } int main() {int n;//輸入n個(gè)數(shù)字scanf("%d", &n);int i = 0;//用于存儲(chǔ)數(shù)字時(shí)的循環(huán)計(jì)數(shù)for (i = 0; i<n; i++) //將n個(gè)數(shù)字存入數(shù)組中scanf("%d", &a[i]);int k;scanf("%d", &k);quick_sort(a, 0, n - 1);//快速排序函數(shù)調(diào)用for (i = n - 1; k>0; k--, i--) //循環(huán)輸出排序結(jié)果printf("%d\n", a[i]);system("pause");return 0; }

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。