低階排序演算法:氣泡排序,選擇排序,插入排序
高階排序演算法:歸併排序,堆排序,快速排序
插入排序就是在已經排序的資料中從大往小比較,出現比該數小的就插入到該位置後面。
#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...