/*
1、第一次用陣列+排序實現類似優先佇列,心情有點小激動;原來資料結構是這樣用的
2、回顧了一下插入排序,再原來有序的陣列的情況下,插入新元素的插入排序(插入排序的活用)
3、這裡是用到了插入排序的思想,而非完全的插入排序的步驟;正如二分思想,他是一種思想,不要
停留在一種方法上、一種資料結構上。
4、poj 2833 時間複雜度 o(n*n),超時,因為優先佇列是由最小(大)堆實現的,時間複雜度o(n*logn)----正好服務優先佇列的要求,保證隊首(棧頂)
元素的優先順序最高,其他元素的優先順序順序不考慮。
5、再插入排序中,增加二分查詢的思想是不是效率高一些呢? —— 比較次數會減少,移動次數還是不會減少,因此還是不如堆排序效率高;還是那句話這是一種思想的昇華。
*/#include #include using namespace std;
int n,pmax,pmin;
void insert_sort(int *a,const int &maxn)
*(a+j+1) = tmp;
}}void insert_sort_min(int *a,const int &key)// 維護最小陣列
*(a+j+1) = key;
}void insert_sort_max(int *a,const int &key)
*(a+j-1) = key;
}// 結果的輸出
void print(int *a,const int &n)
}for(i=0;i
插入排序思想與實現
插入排序的基本思想 每一趟將乙個待排序元素,按其排序碼大小插入到前面已經排好序的一組元素的適當位置上,直到所有待排序元素元素全部插入為止。在這裡,這裡介紹兩種具體的插入排序演算法 直接插入排序,希爾排序。1 直接插入排序 直接插入排序的思想 當插入第i i 1 個元素時,前面的arr 0 arr i...
插入排序之折半插入排序(c 實現)
插入排序有直接插入排序,折半插入排序 又叫二分插入排序 鍊錶插入排序,希爾排序等。在排序中屬於穩定排序型別。折半插入排序的演算法思想 1 計算 0 i 1 的中間點,用 i 索引處的元素與中間值進行比較,如果 i 索引處的元素大,說明要插入的這個元素應該在中間值和剛加入i索引之間,反之,就是在剛開始...
插入排序之表插入
表插入 時間複雜度o n 2 附加空間o 1 穩定排序 define crt secure no warnings include using namespace std define len 8 有len個元素要排 struct record void linklistinsertsort rec...