1樓:匿名使用者
1.你把陣列的下標也儲存到一個結構體陣列中,對原陣列進行排序的同時,也對那個臨時陣列進行同樣的調換,等目標陣列排序好,你的下標陣列自然也排好了。
2.例如:
struct
;排序後的index依然不變。參考**:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct elementarray[10];
int compare(const void *a, const void *b)
int main()
;for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++)
qsort(array, sizeof(input)/sizeof(input[0]), sizeof(array[0]), compare);
for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++)
cout << array[i].data << "\t" << array[i].index << endl;
return 0;
}1 3
12 2
33 7
55 8
56 1
99 4
99 9
234 6
812 10
1000 5
2樓:匿名使用者
你把陣列的下標也儲存到一個臨時陣列中,對原陣列進行排序的同時,也對那個臨時陣列進行同樣的調換,等目標陣列排序好,你的下標陣列自然也排好了。你如過需要**+20分我給你寫,這個是最簡單的方法。
3樓:匿名使用者
我來晚了,雨落深山的方法是個既簡單又好用的的方法.
4樓:世鑲柳
看你陣列怎麼定義了,最好結構題陣列,例如:
struct
;排序後的index依然不變。參考**:
[95@~]$ cat test.cpp
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct elementarray[10];
int compare(const void *a, const void *b)
int main()
;for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++)
qsort(array, sizeof(input)/sizeof(input[0]), sizeof(array[0]), compare);
for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++)
cout << array[i].data << "\t" << array[i].index << endl;
return 0;
}[96@~]$ g++ -wall test.cpp
[97@~]$ ./a.out
1 312 2
33 7
55 8
56 1
99 4
99 9
234 6
812 10
1000 5
[98@~]$
5樓:匿名使用者
雨落深山的辦法非常好用。
6樓:匿名使用者
這個要具體看你的數字和陣列元素的多少
要是數字不太大,並且陣列元素不是很多你就可以用移位計算
要是陣列元素數字很大或是有很多元素就要用二維陣列或是結構了
二維陣列的第一行為原陣列,第二行為序號
如:a[2][n]的陣列其中a[0]為原陣列a[1]編號
交換時就要
int ntemp;
for (int i=0;ia[0][j]) }
排完後輸出a[1]就可以,上面的排序只是說明一下你也可以換為比較快速的方法
結構也是一樣的要兩個元素,一個是 數值,一個是 編號
(這個原理很簡單,基本上和上面的一樣,就不多說了)
可是在c++中,要是32位機int是4位元組的大多的數字是不會超過大小的所以這個你可能會用到的
你的陣列是int na[n];的一個陣列,
元素不超過256個,元素的數值大小不大於2^23
或是 元素不超過65536個,元素的數值大小在-32767~32768之間
為了方便我只說元素不超過256個,元素的數值大小不大於2^23 一個情況了,後面的和這個一樣,你可以改一下就好了(0=-2^23時可以這樣)
注:這個方法不支援有重複的數字的隨機輸出,就是你要是有兩個相同的數,先出現的一定會排前面
for(int i=0;ina[j]) }
} //然後是輸出,你可以這樣(只輸出後8位)
for(int i=0;i cout<<(na[i]&0xff)< 這樣就可以了 7樓:匿名使用者 #include using namespace std; void main() ;int b[10]; int i,j,k; for(i=k=0;i<10;i++) a[k]+=1000000; b[i]=k; }for(i=0;i<10;i++) for(i=0;i<10;i++) //還原a陣列} 求檢查c++程式:輸入一串陣列,輸出排序後陣列和每個數對應序號 8樓:萢萢 如果你用vc++6.0的話這個程式會報錯,因為vc++6.0不支援cin >> n; int a[n]; int z[n]; 這種陣列宣告定義的方式,如果你使用c-free 5的話,不會報錯。 9樓: cin >> n; int a[n]; int z[n]; 這顯然是錯誤的。宣告陣列,內必須是常量,不能用變數。如果陣列大小由輸入確定,那得用動態方式。 用c++對一組資料排序並輸出每個元素在原陣列中的下標 10樓:匿名使用者 修改如上! while迴圈有點問題,還有new了之後要delete,main需要return。基本上就這些吧。。。 c++陣列排序怎麼返回數值在原陣列中的下標 11樓:小小司同學 直接用multimap key放資料,value放下標 一個整型無序陣列裡的數進行順序排序後,如何能輸出數的原下標(用c或者c++) 12樓:天枰非官 #include using namespace std; int n; pair a[233]; int main() sort(a+1,a+n+1); for (int i=1;i<=n;i++) printf("%d ",a[i].second);} hi列同原公式,陣列公式 f2,row 1 9 row 1 9 10 9 row 1 9 0 0 i2 if countif b2 f2,0 9 1,row 1 9 10 9 row 1 9 0 0 j2普通公式 k2和原來的類似,只是位置和數字稍稍變化下,依然是陣列公式 if j2 min if ... 看到你的補充,我忍不住也想補句 要不要幫你把書也讀了或者是班也上了啦?count 這個題目說白了就,就是定義一個兩維float陣列a 10 2 一個一維string陣列city 10 存放相應的城市名 a i 0 某城住房總數 讓使用者賦值,或者程式隨機產生a i 1 某城家庭總數 同上 對a i ... 科技藝術生活 為什麼要用24c02儲存,要求上電回零,即初始化了,那麼24c02不就沒有用了麼,再說了,許多微控制器自帶eeprom 你這用stc15f104 8腳 微控制器就可以了, 超級 在梯形圖中,將y0和y1的常閉觸點分別與對方的線圈串聯,可以保證它們不會同時為on,因此km1和km2的線圈...excel陣列數值查詢,求高手幫忙
求高手幫忙編個程式C 的謝謝了
求高手幫忙寫個c語言寫的51程式