[問題] 我想找出數列前幾大值與index(我不會用bbs恕前文刪除)

看板C_and_CPP (C/C++)作者 (不要對我夾雞雞)時間16年前 (2009/09/20 11:51), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
我寫了一段程式 我想找出數列的前S大值 結果只會找出S個一樣的第一大值 比如下面的程式會顯示出找到3個13跟他的INDEX 請問各位我應該在哪個部分做修改呢? 感謝各位回答^^ Nc:數列長度 S:要找前S個最大值 # include <math.h> # include <stdio.h> # include <stdlib.h> # include <time.h> # define Nc 8 # define S 3 main () { time_t t; int i,nk[S],m,k; double mag[Nc],tmp1[S],tmp_I[S],tmp_Q[S]; mag[0]=3.0; mag[1]=2.0; mag[2]=8.0; mag[3]=1.0; mag[4]=4.0; mag[5]=9.0; mag[6]=6.0; mag[7]=13.0; for (i=0;i<S;i++) /*Reset variables for sorting */ { tmp1[i]=0.0; nk[i]=0; } for (i=0;i<Nc;i++) /*Calculate magnitude and search the Peak value */ { for (m=0;m<S;m++) { if (mag[i]>tmp1[m]) { for (k=1;k<(S-m);k++) { tmp1[S-k]=tmp1[S-k-1]; nk[S-k]=nk[S-k-1]; } tmp1[m]=mag[i]; nk[m]=i; } } } } /* Main end */ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.199.66

09/20 19:40, , 1F
懶得看code直接說想法好了; 概念1, 找到第1大的就放到某
09/20 19:40, 1F

09/20 19:40, , 2F
個array去(index), 找第二大的過程中遇到以在該array裡
09/20 19:40, 2F

09/20 19:41, , 3F
的就跳過不比較; 策略2, 直接把array排序過一遍, 沒記錯
09/20 19:41, 3F

09/20 19:42, , 4F
的話selection sort做完前N輪, 就可以找出前N大的了.
09/20 19:42, 4F

09/20 20:10, , 5F
我有做一個跟你想法1的程式 有達道我的目標 但是我想從上面的
09/20 20:10, 5F

09/20 20:11, , 6F
程式做修改 因為想法一畢竟比較耗時間
09/20 20:11, 6F
文章代碼(AID): #1AjQR1p4 (C_and_CPP)
文章代碼(AID): #1AjQR1p4 (C_and_CPP)