插入排序和歸併排序

2022-03-23 17:48:39 字數 911 閱讀 3688

//插入排序

//c++

#include 

using namespace std;

void main()

;//定義乙個未排好序的陣列

int i,j,key;

for(i=0;i<6;i++)//輸出排序前的序列

printf("%3d",a[i]);

for(j=1;j<6;j++)

a[i+1]=key;

} coutprintf("%3d",a[i]);

cout<}

//歸併排序

//c++**

#include 

using namespace std;

void mergearray(int a,int first,int mid,int last,int temp)// 將兩個序列合成乙個序列

while(i<=m)

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

while(j<=n)

temp[k++]=a[j++];

for(i=0;ia[first+i]=temp[i];

}void mergesort(int a,int first,int last,int temp)//將乙個數列遞迴分成兩份

}void mergesort(int a,int n)//呼叫歸併函式

void main()

;for(i=0;i<6;i++)//輸出初始數列

coutfor(i=0;i<6;i++)//輸出排序後序列

cout}注釋:歸併排序演算法是優於插入排序的演算法,當排序的資料越多它的優勢越明顯。掌握一種更加高階的資料演算法對於乙個好的程式設計師來說非常重要。

插入排序和歸併排序

一共有三種 直接插入排序 希爾排序和折半插入排序。最後乙個折半插入排序,感覺用在陣列上面不太方便,就沒寫出來。遞迴實現沒有思路,使用的非遞迴演算法。直接插入排序 這個演算法預設前n個數是已經排好序的,n隨著你的插入逐漸變大,最開始是1。然後從後往前逐漸查詢應該插入的位置 我的演算法是從小到大,那就依...

插入排序和歸併排序

本人在csdn的原鏈結 首先是插入排序,這個過程就可以比喻成左手放牌 已排好序 右手抓牌 牌堆上最頂端的一張牌 然後放到左手,插到正確的位置 for j 2 to a.length key a j i j 1 while i 0 a i 0 key a i a i 1 key 空間複雜度為o 1 最...

插入排序 歸併排序

插入排序 define len 5 int a len void insertion sort void int i,j,k for j 1 j len j k a j i j 1 while i 0 a i k a i 1 a i i a i 1 k 歸併排序 int a 8 void merge...