對一維陣列的直接插入排序,過程函式化。
直接插入排序就是將某乙個元素與順序表中元素進行比較,然後插入到相應的位置,使整個順序表處於有序狀態。
對於插入排序,有三種方法:1. 直接插入排序2. 二分插入排序3.希爾排序
// 排序函式
int insertsortfun(int array,int length)
array[j]=temp; //當前位置的原元素已往後移,把a元素填入}}
(1)「比較」序列中兩個關鍵字的大小;(2)「移動」記錄。最好的情況(關鍵字在記錄序列中順序有序):
「比較」的次數:
「移動」的次數:
最壞的情況(關鍵字在記錄序列中逆序有序):
「比較」的次數:
「移動」的次數:
最壞情況下(輸入資料是逆有序的) tw(n)=o(n2)
平均情況下,耗時差不多是最壞情況的一半 te(n)=o(n2)
減少元素的比較次數
減少元素的移動次數
// 完整c**
#include #include #define arraysize 5
int insertsortfun(int array,int length)
array[j]=temp; //當前位置的原元素已往後移,把a元素填入
}}void printarray(int array)
int main(); //初始化陣列
insertsortfun(array,arraysize); //呼叫排序函式
printarray(array); //列印陣列,進行輸出
C 資料結構 直接插入排序
include typedef int infotype define n 8 假設的檔案長度,即待排序的記錄數目 typedef int keytype 假設的關鍵字型別 typedef struct rectype typedef rectype seqlist n 1 seqlist為順序表型...
C 資料結構 直接插入排序
include define n 12 using namespace std 將46,74,16,53,14,26,40,53,86,65,27,34從小到大排序 直接插入排序方法 基本思想 依次從待排序數列中取出乙個元素,跟前面已經排序好的有序數列從後往前比較後,插入到有序數列的適當位置 voi...
資料結構 直接插入排序
直接插入排序 include include typedef struct int elem int length sqlist void initsqlist sqlist l int i printf 請輸入元素個數 scanf d l length l elem int malloc size...