日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

数据结构-直接插入排序讲解(C语言)

發(fā)布時間:2025/3/21 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-直接插入排序讲解(C语言) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1.基本思想:
    • 2.圖解
    • 3.代碼實例

1.基本思想:

設(shè)待排序的元素放在數(shù)組R[0…n-1]中,排序過程中,R被劃分成兩個子區(qū)間,有序區(qū)R[0…i-1]和無序區(qū)R[i…n-1],初始時,有序區(qū)只有R[0]一個元素,直接插入排序的一趟操作是將當(dāng)前無序區(qū)的開頭元素R[i] (1<=i<=n-1)插入到有序區(qū)R[0…i-1]中的適當(dāng)位置,使R[0…i]變?yōu)樾碌挠行騾^(qū)

對于第i趟排序,如何將無序區(qū)的第一個元素R[i]插入到有序區(qū)呢?其過程是先將R[i]暫時放到tmp中,j在有序區(qū)中從后向前找(初值為i),凡是關(guān)鍵字大于tmp.key的記錄均向后移一個位置。若找到某個R[j],其關(guān)鍵字小于或等于tmp.key,則將tmp 放到他們的后面,即R[j] = temp

2.圖解


圖片來自博主:https://blog.csdn.net/qq_37623612/article/details/80312121

3.代碼實例

#include<stdio.h>typedef struct {int key; }RecType;void InsertSort(RecType R[], int n) { //array待排序數(shù)組,n:數(shù)組元素數(shù)量printf("\n");int i, j; //循環(huán)變量RecType temp; //存儲待排序元素for (i = 1; i < n; i++) {j = i;temp = R[i]; //待排序元素賦值給臨時變量while (j > 0 && temp.key < R[j - 1].key) { //當(dāng)未達(dá)到數(shù)組的第一個元素或者待插入元素大于待比較的元素則跳出循環(huán)R[j] = R[j - 1]; //就將該元素后移j--; //下標(biāo)減一,繼續(xù)比較}R[j] = temp; //插入位置已經(jīng)找到,立即插入} for(int k = 0;k<n;k++) {printf("%d \n",R[k].key);}}int main() {RecType R[3] = {{5},{4},{7}};int n = 3;for(int k = 0;k<n;k++) {printf("%d \n",R[k].key);}printf("----------------------------");InsertSort(R,n); }

運行結(jié)果如下

總結(jié)

以上是生活随笔為你收集整理的数据结构-直接插入排序讲解(C语言)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。