資料結構與演算法(C語言版) 插入排序

2021-07-25 12:05:39 字數 1897 閱讀 2721

低階排序演算法:氣泡排序,選擇排序,插入排序

高階排序演算法:歸併排序,堆排序,快速排序

插入排序就是在已經排序的資料中從大往小比較,出現比該數小的就插入到該位置後面。

#include

using namespace std;

void insertionsort(int *a, int n);

int main();

insertionsort(x, 10);

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

system("pause");

return0;}

void insertionsort(int *a, int n)

a[in] = temp;}}

如果要對其他型別的資料進行排序,使用這個方法就不行,所以可以使用函式模板:

這樣的話不論是int,long,double都可以使用,就不限於int型別了。

還可以使用函式模板對插入排序進行優化:

每次迴圈時都要比較是不是大於0,簡化不用每次比較

#include

using

namespace

std;

template

void insertionsort_2(t *a, int n);

int main();

insertionsort_2(x, 10);

for (int i = 1; i <= 10; ++i)

system("pause");

return0;}

template

void insertionsort_2(t *a, int n)

a[i + 1] = temp;}}

還可以把插入排序分成兩個函式:

#include

using

namespace

std;

template

void insertionsort_2(t *a, int n);

template

void insert(const t& e, t *a, int i);

int main();

insertionsort_2(x, 10);

for (int i = 1; i <= 10; ++i)

system("pause");

return0;}

template

void insertionsort_2(t *a, int n)

a[i + 1] = temp;*/

}}template

void insert(const t& e, t *a, int i)

a[i + 1] = e;

}

總結:使用c++的一些高階程式設計方法,並知道演算法經過細微的修改可以改變演算法時間複雜度,使演算法時間更短。自己設計排序演算法一般也是選擇插入排序,因為插入排序速度最快。

資料結構 C語言版 折半插入排序

折半插入排序是對直接插入排序的優化,折半插入排序所需附加儲存空間和直接插入排序相同,從時間上比較,折半插入排序僅減少了關鍵字間的比較次數,而記錄的移動次數不變。因此,折半插入排序的時間複雜度仍為o n2 直接插入排序可參考 此處以資料2的排序為例,用i從左到右遍歷到下標為5的位置,發現此處的值2小於...

資料結構(c語言版)排序1 插入排序

排序的概念 將乙個無序的序列排列成乙個有序的序列 按儲存介質可乙個分為 1.內部排序 資料量不大,資料在記憶體,無需內外存交換資料。2.外部排序 資料量較大,資料在外存,檔案排序 按比較器個數可分為 1.序列排序 單處理機 同時比較一對元素 2.並行排序 多處理機 同時比較多對元素 按主要操作可分為...

插入排序(c語言版)

插入排序 insertion sort 的基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排序好的序列中,直到全部記錄插入完成為止.假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直到i n 為止,依次將r i 插入當前的有序區r...