插入排序和歸併排序實現

2021-06-29 06:56:11 字數 827 閱讀 5659

在文章:

的基礎上,利用c++中的vector容器代替陣列來實現,但是發現這樣做大大的增加了程式執行的時間,並且兩者的執行時間幾乎差不多

改寫的程式

#include #include #include"stdio.h"

#include #include using namespace std;

//插入排序

vectorinsertsort(vectorptr)

ptr[j+1]=key;

} return ptr;

}//對已經排列子串行合併

void merge(vector*ptr,int begin, int end,int mid )

left.push_back(imax);

for (int i=0;idata()[mid+1+i]);

} right.push_back(imax);

int i=0,j=0;

for (int k=begin;k<=end;k++) }

//歸併排序子串行排序操作

void mergesort(vector*ptr,int begin,int end)

//輸出容器整數

void output(vectorptr){

for (int i=0;ia;

vectorsort_a;

srand((int)time(null));//以當前時間對應的int值為隨機序列起點

for (int i=0;i*ptr=&a;

mergesort(ptr,0,test_num-1);

cout<<"mergesort time:"<

插入排序和歸併排序

一共有三種 直接插入排序 希爾排序和折半插入排序。最後乙個折半插入排序,感覺用在陣列上面不太方便,就沒寫出來。遞迴實現沒有思路,使用的非遞迴演算法。直接插入排序 這個演算法預設前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 最...

插入排序和歸併排序

插入排序 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 co...