C 中p 2000000陣列的排序問題

2022-05-18 19:21:25 字數 866 閱讀 3155

1樓:苦澀的咖啡

以下是**,至於a陣列你可以開的很大很大,,,,,演算法複雜度為n#include "stdio.h"

void hebing (int*,int,int,int);

void fenzhi(int*,int,int);

int main()

;int i;

fenzhi(a,0,9);

for (i=0;i<10;i++)

printf("\n");

return 0;

}void hebing(int *a,int p,int q,int r)//合併函式

for (j=0;j

i=0;

j=0;

for (k=p;k<=r;k++)

else if (j==n2)

else if(l[i]<=r[j])

a[k]=l[i++];

else

a[k]=r[j++];}}

void fenzhi(int *a,int p,int r)//分治遞迴

}至於要找到排序後在原來陣列的位置這不簡單嗎?先把原陣列備份,然後再根據排序後的陣列元素對原陣列檢索,直接一個for()迴圈就可以檢索出來了嗎?當然,也可以在我上面的分治排序法中直接記錄下在原來陣列的位置, 我懶得弄了,以上方法出自《演算法導論》第十六頁,書上只有偽**,這是我參照書上所寫的一個例子

滿意請採納,謝謝

2樓:匿名使用者

不建議自己搞,不知道你用來幹嘛。你需要根據實際要求重新規劃,這不是演算法可以解決的,sqlserver管理幾個g的空間,不是靠演算法,要解決這類問題要藉助多種手段,比如多執行緒,快取,後臺非同步處理等等。

VC中如何將陣列快速的排序

這個建議採用快速排序。快速排序是一種基於分治演算法的排序,網上能搜尋到很多講解,我就不在此贅述了。另一種方法是採用堆排序。採用堆 heap 這種資料結構來實現排序。堆是一個完全2叉樹,且滿足所有父節點均小於 或均大於 其子節點。堆排序的過程就是,將待排序的數建成堆,然後每次彈出堆的頭節點。具體的實現...

c語言用選擇法對陣列中整數按由小到大排序

首先以array 0 作為參照,從左到右掃描,找到最小的資料與array 0 位置交換。接下來以array 1 作為參照,重複上述過程。k i定位參照 k j找到剩下陣列中最小值 k i是為了每次迴圈都從當前項開始呀。k j 不是你說的j k 是為了記錄後面的最小項,以方便替換。從第i個數開始,比較...

c 中string陣列的問題,C 中string陣列的問題

string並不是c 的基本資料型別。它是標準庫裡宣告的一個字串類。所以樓主的答案是 可以。string str 10 定義一個字串陣列str顯示的是 i love you 還可以這樣定義字串陣列 string name 5 可以賦值啊。include include using namespace...