简单选择排序,多简单

89 阅读1分钟

简单选择排序有多简单?

简单到一句话描述:只需要在待排序序列找到最小元素放到已排序序列后方!

简单选择排序的步骤

  • 一个乱序数组,最小元素初始化为第一个元素
  • 在待排序数组中找到最小的元素与他(第一个元素)进行交换
  • 交换后前面就是有序数组,后面数组继续上面操作

简单选择排序图示

image.png

简单选择排序代码实现

C语言代码实现,使用两层for循环进行选择最小值排序

//交换两数 
void swap(int *a,int *b){
	int t=*a;
	*a=*b;
	*b=t;
}
void selectSort(int arr[],int n){
	
	for(int i=0;i<n-1;i++){
		//选待排序数组第一个元素为 最小元素
		int minIndex=i;
		
		//循环剩下元素,找到全部数组对应的最小元素 
		for(int j=i+1;j<n;j++){
			if(arr[j]<arr[minIndex]){
				minIndex=j;
			}
		} 
		
		//交换最小值和第一个元素 
		swap(&arr[i],&arr[minIndex]); 
	}
}

总结

  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)
  • 两层循环所以要n^2的时间复杂度,不需要额外空间所以为O(1)