数据结构-直接插入排序讲解(C语言)
生活随笔
收集整理的這篇文章主要介紹了
数据结构-直接插入排序讲解(C语言)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1.基本思想:
- 2.圖解
- 3.代碼實例
1.基本思想:
設待排序的元素放在數(shù)組R[0…n-1]中,排序過程中,R被劃分成兩個子區(qū)間,有序區(qū)R[0…i-1]和無序區(qū)R[i…n-1],初始時,有序區(qū)只有R[0]一個元素,直接插入排序的一趟操作是將當前無序區(qū)的開頭元素R[i] (1<=i<=n-1)插入到有序區(qū)R[0…i-1]中的適當位置,使R[0…i]變?yōu)樾碌挠行騾^(qū)
對于第i趟排序,如何將無序區(qū)的第一個元素R[i]插入到有序區(qū)呢?其過程是先將R[i]暫時放到tmp中,j在有序區(qū)中從后向前找(初值為i),凡是關鍵字大于tmp.key的記錄均向后移一個位置。若找到某個R[j],其關鍵字小于或等于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) { //當未達到數(shù)組的第一個元素或者待插入元素大于待比較的元素則跳出循環(huán)R[j] = R[j - 1]; //就將該元素后移j--; //下標減一,繼續(xù)比較}R[j] = temp; //插入位置已經找到,立即插入} 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); }運行結果如下
總結
以上是生活随笔為你收集整理的数据结构-直接插入排序讲解(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android --- Unable t
- 下一篇: 第十一届蓝桥杯java B组第二场-试题