我的思路: 先把每個數的出現的次數和下標記錄,所以用到乙個資料結構node。然後先根據points值排序,那麼node[0].points就是最大值,然後我們就可以得到第二大的值,和他的位置,然後再把第二大的值的num排序一下,就可以輸出了。因為我不想用那麼多次for迴圈,所以用了兩次排序。其實這題也可以用三次for來求出,但事先要先求出最大值和第二的的值。我比較了下,簡單的for和我的這種方法,我的是150+ms,那個是200ms。 還是快一點點的,哈哈
#include #include#include
using
namespace
std;
#define max 10001typedef
struct
node;
node node[max];
int cmp(const
void *a,const
void *b) //
降序排列
int cmp1(const
void *a,const
void *b)
intmain()
for(i=0; i)
node[nums].points++;
}//根據points排序
qsort(node,max,sizeof
(node),cmp);
maxn=node[0].points; //
第一大的points值
i=1;
while(node[i].points==maxn)
//確定第二大的位置
index=i; //
第二大的第乙個位置
maxn=node[i].points; //
記錄第二大的points值
ncount=0
;
while(node[i].points==maxn)
//把排第二的排序一下
qsort(node+index,ncount,sizeof
(node),cmp1);
while(ncount--)
printf("\n
");}
return0;
}
Poj2092 計數排序 求第K大的元素
題目大意 統計出現的n個數,每個數的範圍為1 10000,輸出統計次數第二大的那個數 實現 建立乙個players 100001 的陣列,當每個數n出現時就統計players n 然後最後找出最大的次數 max和第二大的次數secondnumber,在players中元素值為secondnumber...
poj1002 簡單排序題
從午後一點呼呼睡到三點,昏昏沉沉的,感覺學不了平衡樹,於是找了道水題做做,不過這題雖然水但是很麻煩 渾渾噩噩的打 調錯誤 會用sort函式就可以了,沒什麼特別的吧 include include includeusing namespace std int pho 100005 ans 100005...
排序 簡單排序
氣泡排序 函式名 bubble sort 功能 實現公升序排序 引數 帶排序的陣列,陣列的長度 返回值 為空 描述 時間複雜度為o n 2 輔助空間為o 1 有一種變形的氣泡排序 雞尾酒排序,它是雙向的氣泡排序,時間複雜度也為o n 2 void bubble sort int bubble,int...