插入排序主要是通過將某個待排的資料,在已經排好的資料中找到插入的位置,這樣遍歷完這個資料集合之後,所有的資料將被排好序。需要的時間複雜度為o(n^2)。在如果資料有一定的排序性資料,速度還是很快的,因為它在找位置的時候,在少數的比較之後就能找到插入的位置,相對選擇排序還是有一定的優勢。
#include #include #include void benchmak(const char *name, void (*func)(int *arry, int), int arry, int n)
int* generaterandomarray(int n, int rangl, int rangr)
return array;
}void insertsort(int arry, int n)
else //如果比最大的那個還大,則直接退出比較
} }}
int main(int argc, char *ar**)
printf("\n");
if(arry)
return 0;
}
root@ubuntu:/home/root/datastruct/day2#
root@ubuntu:/home/root/datastruct/day2# gcc insertsort.c -o insertsort
root@ubuntu:/home/root/datastruct/day2#
root@ubuntu:/home/root/datastruct/day2#
root@ubuntu:/home/root/datastruct/day2# ./insertsort
insertsort : 0.000004s
1 7 7 7 8 10 10 10 10 10
root@ubuntu:/home/root/datastruct/day2#
root@ubuntu:/home/root/datastruct/day2# ./insertsort
insertsort : 0.000004s
7 7 7 7 8 8 8 8 10 10
root@ubuntu:/home/root/datastruct/day2#
改進點主要在尋找插入位置的時候,不斷的交換兩個值,需要三步,其實我們可以記下下要插入的值,然後在找到這個位置後直接插入即可。
void insertsort(int arry, int n)
else //如果比最大的那個還大,則直接退出比較
}arry[j] = tmp; //要插入的位置
}}
插入排序(C語言)
採用先確定數字然後找位置的方法。每次把最前面或最後面的沒有排好序的數字插入到已經排好序的數字中間合適的位置上。不斷把選擇好的數字和相鄰的數字做順序調整,直到它被放在合適的位置上。插入排序 include void insert sort int p num,int size int num 0,nu...
插入排序(c語言)
插入排序的基本思想是 每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。插入排序示例 void printfbuff datatype a,size t n 列印陣列 printf n void insertsort datatype a,size t...
C語言 插入排序
實現 精簡 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 實現過程 為了比較容易地理解插入排序,我們可以列出一組資料,比如 1,5,4,3,7 我列出了兩種方法分別說明插入排序的實現過程,你可以...