动图图解C语言插入排序算法,含代码分析
C語言文章更新目錄
C語言學習資源匯總,史上最全面總結,沒有之一
C/C++學習資源(百度云盤鏈接)
計算機二級資料(過級專用)
C語言學習路線(從入門到實戰)
編寫C語言程序的7個步驟和編程機制
C語言基礎-第一個C程序
C語言基礎-簡單程序分析
VS2019編寫簡單的C程序示例
簡單示例,VS2019調試C語言程序
C語言基礎-基本算法
C語言基礎-數據類型
C語言中的輸入輸出函數
C語言流程控制語句
C語言數組——一維數組
C語言數組——二維數組
C語言數組——字符數組
C語言中常用的6個字符串處理函數
精心收集了60個C語言項目源碼,分享給大家
C語言核心技術——函數
C代碼是怎樣跑起來的?
C語言實現字符串的加密和解密
C語言——文件的基本操作
使用C語言鏈表創建學生信息并且將信息打印輸出
圖解C語言冒泡排序算法,含代碼分析
實例分析C語言中strlen和sizeof的區別
開發C語言的3款神器,VS2019、VScode和IntelliJ Clion
動圖圖解C語言選擇排序算法,含代碼分析
C語言實例
C語言實例第1期:十進制數轉換二進制數
C語言實例第2期:判斷某一年是否為閏年
C語言實例第3期:在控制臺打印出著名的楊輝三角
C語言實例第4期:交換數組中最大數和最小數的位置
插入排序算法的原理
將待排序序列分成兩個序列,前面的序列保持有序,依次選取后面的序列的元素,在前面的序列中進行插入。
使用雙層循環,外層循環對除了第一個元素之外的所有元素,內層循環對當前元素前面有序表進行待插入位置查找,并進行移動。
代碼實現
// // @author: 沖哥 // @date: 2022/1/1 19:54 // @description:實現插入排序 // 微信關注公眾號【C語言中文社區】,免費領取300G精品編程資料#include <stdio.h>#define N 5 //數組中元素的個數void print_arr(int *); //將數組打印輸出 void insert_sort(int *); //選擇排序int main() {int arr[N] = {23, 12, 33, 20, 45}; //定義數組并初始化printf("排序前的數據為:\n");print_arr(arr);printf("開始排序:\n");insert_sort(arr);printf("排序后的數據為:\n");print_arr(arr); }void print_arr(int arr[]) {//將數組循環遍歷輸出for (int i = 0; i < N; i++) {printf("%d\t", arr[i]);}printf("\n"); }void insert_sort(int arr[]) {int i; //掃描次數int j; //以j來定位比較的元素int temp; //中間變量,暫存數據for (i = 1; i < N; i++) { //循環N-1次(除了第一個元素之外的所有元素)temp = arr[i];j = i - 1;while (j >= 0 && temp < arr[j]) { //對當前元素前面有序表進行待插入位置查找arr[j + 1] = arr[j];j--;}arr[j + 1] = temp;printf("第%d次掃描:", i);print_arr(arr);} }運行結果
排序前的數據為: 23 12 33 20 45 開始排序: 第1次掃描:12 23 33 20 45 第2次掃描:12 23 33 20 45 第3次掃描:12 20 23 33 45 第4次掃描:12 20 23 33 45 排序后的數據為: 12 20 23 33 45動圖圖解選擇排序
如果您覺得本篇文章對您有幫助,請轉發給更多的人
【C語言中文社區】是一個C語言/C++視頻教程、學習筆記、電子書、計算機二級資料等專注于C語言/C++編程學習者的干貨知識分享平臺,精選深度文章,分享優秀干貨類、技能類的學習資源,幫助學習中的你。
總結
以上是生活随笔為你收集整理的动图图解C语言插入排序算法,含代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动图图解C语言选择排序算法,含代码分析
- 下一篇: C语言实例第5期:在控制台打印100-2