考研數據結構之排序(8.6)——選擇類排序之簡單選擇排序(C表示)

算法思想

選擇類排序的主要動作是“選擇”,簡單選擇排序採用最簡單的選擇方式,從頭至尾順序掃描序列,找出最小的一個關鍵字,和第一個關鍵字交換,接着從剩下的關鍵字中繼續這種選擇和交換,最終使序列有序。

執行流程

代碼

核心代碼:

/* 簡單選擇排序 */
/* 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;
}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章