动图图解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語言實例第1期:十進制數轉換二進制數
C語言實例第2期:判斷某一年是否為閏年
C語言實例第3期:在控制臺打印出著名的楊輝三角
C語言實例第4期:交換數組中最大數和最小數的位置
選擇排序算法的原理
每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到全部待排序的數據元素排完。
代碼實現
// // @author: 沖哥 // @date: 2021/12/24 14:43 // @description:實現選擇排序 // 微信關注公眾號【C語言中文社區】,免費領取300G精品編程資料#include <stdio.h>#define N 5 //數組中元素的個數 void print_arr(int *); //將數組打印輸出 void select_sort(int *); //選擇排序int main(){int arr[N] = {23,12,33,20,45}; //定義數組并初始化printf("排序前的數據為:\n");print_arr(arr);printf("開始排序:\n");select_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 select_sort(int arr[]){int temp; //中間變量for (int i = 0; i < N-1; i++) { //外層循環for (int j = i+1; j < N; j++) { //內層循環if (arr[i] > arr[j]){ //外循環里的元素和內循環里的每一個元素比較//交換位置temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}print_arr(arr);}printf("\n"); }運行結果
排序前的數據為: 23 12 33 20 45 開始排序: 12 23 33 20 45 12 20 33 23 45 12 20 23 33 45 12 20 23 33 45排序后的數據為: 12 20 23 33 45從運行結果可以看出:
第一次掃描將23和12的位置互換
第二次掃描將23和20的位置互換
第三次掃描將23和33的位置互換
第四次掃描排序完成
為了更清楚地了解排序過程,請參照以下動圖圖解
動圖圖解選擇排序
如果您覺得本篇文章對您有幫助,請轉發給更多的人
【C語言中文社區】是一個C語言/C++視頻教程、學習筆記、電子書、計算機二級資料等專注于C語言/C++編程學習者的干貨知識分享平臺,精選深度文章,分享優秀干貨類、技能類的學習資源,幫助學習中的你。
總結
以上是生活随笔為你收集整理的动图图解C语言选择排序算法,含代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言实例第4期:交换数组中最大数和最小
- 下一篇: 动图图解C语言插入排序算法,含代码分析