1. 程式人生 > 其它 >最小生成樹唯一嗎_最小生成樹 - 齊芒

最小生成樹唯一嗎_最小生成樹 - 齊芒

技術標籤:資料結構與演算法演算法資料結構插入排序

直接插入排序

/*插入排序是把一個記錄插入到已排序的有序序列中,使整個序列在插入該記錄後仍然有序。插入排序中較簡單的種方法是直接插入排序,其插入位置的確定方法是將待插入的記錄與有序區中的各記錄自右向左依次比較其關鍵字值的大小。*/
/*基本有序,記錄數少*/
/*
基本思想: 每一步將一個待排序的元素,按其排序碼的大小,插入到前面已經排好序 的一組元素的合適位置上去,直到元素全部插完為止。
直接插入排序; 當插入第i(i>=1)個元素時,前面的array[0],array[1],…,array[i-1]已經 排好序,此時用array[i]的排序碼與array[i-1],array[i-2],…的排序碼順序 進行比較,找到插入位置即將array[i]插入,原來位置上的元素順序後移
元素集合越接近有序,直接插入排序演算法的時間效率越高 最優情況下:時間效率為O(n) 最差情況下:時間複雜度為O(n^2) 空間複雜度:O(1),它是一種穩定的排序演算法
*/
#include <stdio.h> void InsertSort(int k[], int n) { int i, j, temp; for( i=1; i < n; i++ ) { if( k[i] < k[i-1] ) { temp = k[i]; for( j=i-1; k[j] > temp; j-- ) { k[j+1] = k[j]; } k[j+1] = temp; } } } int main() { int i, a[10] = {5, 2, 6, 0, 3, 9, 1, 7
, 4, 8}; InsertSort(a, 10); printf("排序後的結果是:"); for( i=0; i < 10; i++ ) { printf("%d", a[i]); } printf("\n\n"); return 0; }