算法思想
選擇類排序的主要動作是“選擇”,簡單選擇排序採用最簡單的選擇方式,從頭至尾順序掃描序列,找出最小的一個關鍵字,和第一個關鍵字交換,接着從剩下的關鍵字中繼續這種選擇和交換,最終使序列有序。
執行流程
代碼
核心代碼:
/* 簡單選擇排序 */
/* R[]指的是待排序的數組;n指的是數組長度 */
void selectSort(int R[],int n){
for(int i=0;i<n;i++){// 循環遍歷數組中的所有數
int k=i;// 用來保存最小值的下標
int min=R[i];// 以R[i]爲最小值的基準
for(int j=i;j<n;j++){// 查找數組序列的最小值
if(R[j]<min){
min=R[j];
k=j;// 返回最小值所在的下標
}
}
/* 交換R[i]與最小值 */
int temp=R[i];
R[i]=R[k];
R[k]=temp;
}
}
完整代碼:
#include<stdio.h>
/* 打印數組元素 */
void print(int nums[],int n) {
printf("\n");
for(int i=0; i<n; i++) {
printf("%d\t",nums[i]);
}
printf("\n");
}
/* 簡單選擇排序 */
/* R[]指的是待排序的數組;n指的是數組長度 */
void selectSort(int R[],int n){
for(int i=0;i<n;i++){// 循環遍歷數組中的所有數
int k=i;// 用來保存最小值的下標
int min=R[i];// 以R[i]爲最小值的基準
for(int j=i;j<n;j++){// 查找數組序列的最小值
if(R[j]<min){
min=R[j];
k=j;// 返回最小值所在的下標
}
}
/* 交換R[i]與最小值 */
int temp=R[i];
R[i]=R[k];
R[k]=temp;
}
}
int main() {
int nums[]= {49,38,65,97,76,13,27,49};
int n=8;// nums數組的長度
printf("排序前:");
print(nums,n);
selectSort(nums,n);// 進行簡單選擇排序
printf("排序後:");
print(nums,n);
return 0;
}
運行結果: