直接插入排序的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的、記錄數增1的有序表
如下是插入排序演算法的基本實現
void insertsort_up(sqlist* l) //公升序
l->ielem[j+1] = temp; //插入到正確位置
cout<
/*關於上述排序演算法的說明:(以陣列19,4,84,38,26為例)
1、當i=1時:
(1)idata[1]19,idata[1]=idata[0]=19,j=-1
(3)將元素插入到正確位置:idata[0]=temp=4
所以,順序更新為4,19,84,38,26
2、當i=2時:
(1)idata[3]>idata[2],if判斷條件不成立,直接跳過插入
3、當i=3時:
(1)idata[3]0;idata[2]>temp成立,idata[3]=idata[2]=84
j=1,j>0;idata[1]>temp不成立,元素不需要後移
(3)將元素插入到正確位置:idata[2]=temp=38
所以,順序更新為4,19,38,84,26
4、當i=4時:
(1)idata[4]0;idata[3]>temp成立,idata[4]=idata[3]=84
j=2,j>0;idata[2]>temp成立,idata[3]=idata[2]=38
j=1,j>0;idata[1]>temp不成立,元素不需要後移
(3)將元素插入到正確位置:idata[2]=temp=26
所以,順序更新為4,19,26,38,84
*/
整體實現如下:
#include #include using namespace std;
#define max_size 5
typedef struct
sqlist;
void printlist(sqlist l)
;
for (i=0; iielem[i] = rand()%100;
l->ielem[i] = idata[i];
l->ilength++;
}
printlist(*l);
} void insertsort_up(sqlist* l) //公升序
l->ielem[j+1] = temp; //插入到正確位置
cout<
l->ielem[j+1] = temp; //插入到正確位置
cout<
執行結果:
資料結構 插入排序(一) 直接插入排序
1 直接插入排序演算法思想 把n個待排序的元素看出乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無序表含有n 1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入有序表中的適當位置,使之成為新的有序表,重複n 1次可完成排序過程。增量法 把a i 插入到a 0 a 1 a i 1 中的...
資料結構 直接插入排序
直接插入排序 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...