c 實現直接插入排序

2021-08-04 03:01:22 字數 695 閱讀 6262

#include#includeusing namespace std;

#define list_init_size 100

#define listincrement 10

#define elemtype int

typedef structsqlist;

//建順序表

void initlist_sq(sqlist &l)

//在第i位置插入元素e

void listinsert_sq(sqlist &l, int i,elemtype e)

int *p, *q;

q = &(l.elem[i - 1]);

for (p = &(l.elem[l.length - 1]); p >= q; --p) //將第i位置及其以後的元素後移乙個位置

*(p + 1) = *p;

*q = e;

++l.length;

}//直接插入排序

void insertsort(sqlist &l)

l.elem[j + 1] = t; //因為臨近for迴圈結束時進行了--j,因此插入位置為j=1}}

//列印

void printl(sqlist &l)

cout << endl;

}void main()

C 實現直接插入排序

直接插入排序在生活中最好的體現就是玩撲克牌,我們理牌的方式是把3和4移動到5的左側,再拿到一張2,把2移到最左側,拿到一張10,放最後邊,再拿到一張7,插入5與10中間。這裡我們的理牌方法就是直接插入排序。話不多說,直接上 這裡一步步給出不同的寫法 include include using nam...

直接插入排序 C 實現

原理 插入排序的基本操作是 有序插入 也就是將元素逐一插到有序序列中,保持序列有序,從而使有序序列的長度不斷增加。對陣列a n 排序時,起初a 0 被認為是長度為1的有序子串行。然後,按照有序插入法,i從1到n 1迴圈地將a i 插入到有序序列中。在插入a i 前,陣列a的前半段 a 0 至a i ...

C 直接插入排序

設計思路 1.首先把乙個元素的第乙個數看作乙個有序的數列 2.定義乙個游動的下標,指向有序序列中的最後乙個元素 2.從有序序列後乙個元素開始,往前比較,如果待比較元素比前乙個元素小的話,額外用變數盛著待比較元素,前乙個元素後移一位 游標減減 此時權當游標 1的位置已經空出 大的話,游標加一的位置即要...