實現直接插入排序(資料結構與演算法 排序)

2021-10-05 05:36:14 字數 1082 閱讀 6005

記號說明:a[k:r]是指序列a[k] a[k+1] a[k+2] … a[r]。

為了討論簡單,假設待排序的每個記錄是乙個整數,這個整數就是排序碼。

直接插入排序:先將第乙個記錄看作是乙個有序的記錄序列,然後從第二個記錄開始,依次將未排序的記錄插入到這個有序的記錄序列中去,直到整個檔案中的全部記錄排序完畢。

舉例說明:

假設待排序的序列是:46,58,15,45,90,18,下面的描述中[ ]中的序列是有序序列,[ ]後面的記錄是待排序的。排序過程是:i從1到n-1執行「將a[i]插入到a[0…i-1]得到從小到大的排列a[0…i]」。

示例過程如下:

初始a[0:0]是乙個有序序列:[46] 58 15 45 90 18;

將a[1]插入a[0:0]得到a[0:1]:[46 58] 15 45 90 18;

將a[2]插入a[0:1]得到a[0:2]: [15 46 58] 45 90 18;

將a[3]插入a[0:2]得到a[0:3]: [15 45 46 58] 90 18;

將a[4]插入a[0:3]得到a[0:4]:[15 45 46 58 90] 18;

將a[5]插入a[0:4]得到a[0:5]:[15 18 45 46 58 90];

將a[i]插入到a[0:i-1]得到a[0:i]的方法是:

首先將a[i]放入臨時變數temp:temp = a[i];然後a[i-1],a[i-2],…依次與temp比較,若大於temp,則往後移動乙個位置;最後乙個騰出的位置放置temp的值。

#include

#include

#include

"directinssort.h"

void

direcinssort

(int

* a,

int n)

// direct insert sorting}}

}void

sortprint

(int

* a,

int n)

//printf("\n");

}int

main()

資料結構與演算法 排序 直接插入排序

資料結構與演算法 排序 直接插入排序 sort insertsort include includevoid insertsort int list,int len int i,j for i 2 i len i if list i 0 list 0 執行結果 請輸入待排序的數字 exit for ...

資料結構 直接插入排序

直接插入排序 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...

資料結構 直接插入排序

直接插入排序 將待插入子串行元素逐步插入到有序序列的執行過程。設有一待排序序列s 其中是有序的,是無序的,要把後面無需的元素,乙個乙個的插入到前面有序的集合中去。如下面的序列可以分為兩個子串行 和 初始序列 75 88 68 92 88 62 77 96 80 72 第一次排序 75 88 68 9...