poj2092 簡單排序

2022-03-12 13:19:21 字數 1126 閱讀 5003

我的思路: 先把每個數的出現的次數和下標記錄,所以用到乙個資料結構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...