網站首頁 編程語言 正文
基本思想
每次找出最小元素,通過交換實現將其放在亂序的首位,直到所有元素都已經排好序。
舉例
以 A[10] = { 3,1,6,4,8,2,10,7,9,5 }
為例
第一次選擇排序:排位置0,元素1是位置0以后的最小元素,那么swap(A[0], A[1]),
即:1 3 6 4 8 2 10 7 9 5,那么位置0是排好序的,位置0以后是亂序。
第二次選擇排序:排位置1,元素1是位置1以后的最小元素,那么swap(A[1], A[5]),
即:1 2 6 4 8 3 10 7 9 5,那么位置1是排好序的,位置1以后是亂序。
… …
完整代碼
//選擇排序,編譯環境 Dev C++ #include <stdio.h> #include <iostream> using namespace std; void sort(int s,int t,int arr[]) //對arr[s...t]進行選擇排序 { if(s<t) { int k = s; //記錄當前最小元素下標,初始值為s for(int j = s + 1;j <= t;j++) { if(arr[j] < arr[k]) k = j; }//至此已經選出了最小元素的下標 if(k != s) //如果最小元素下標不是初始值,則交換 swap(arr[k],arr[s]); sort(s+1,t,arr);//數組arr的s位置已經排好序,接下來開始排s+1位置 } } int main() { int n; scanf("%d",&n); int A[20] = { 0 }; for(int i = 0;i < n;i++) scanf("%d",&A[i]); sort(0,n-1,A); for(int i = 0;i < n;i++) printf("%d ",A[i]); return 0; }
原文鏈接:https://blog.csdn.net/m0_51336041/article/details/122247269
相關推薦
- 2023-03-22 Python裝飾器使用方法全面梳理_python
- 2022-06-28 python神經網絡學習使用Keras進行回歸運算_python
- 2022-07-29 Pytorch實現常用乘法算子TensorRT的示例代碼_python
- 2023-02-12 Golang反射模塊reflect使用方式示例詳解_Golang
- 2022-07-25 通過底層源碼理解YOLOv5的Backbone_python
- 2022-09-03 Go語言函數的延遲調用(Deferred?Code)詳解_Golang
- 2022-03-17 .NET?Core使用C#掃描并讀取圖片中的文字_C#教程
- 2022-06-08 CentOs7下docker簡單實踐,安裝nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支