C/C++教程

基础算法之简单选择排序(selection sort)

本文主要是介绍基础算法之简单选择排序(selection sort),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1,名   称:简单选择排序

2,复杂度:O(n^2)

3,实现方式:C语言

4,空间复杂度:O(1)

5,稳定性:不稳定

6,算法思想:总共遍历两次,外层循环是算法总共要至执行的此数,那么为什么呢?因为该算法每一次执行外层循环会进行一次交换,默认i所在的位置是最大或者最小(要根据升序还是降序确定),然后里层循环是确定要交换的数字,请具体的思想请大家去代码中体会吧!

7,算法种类:升序(ascending order)、降序(descending order)

8,算法实现代码:

#include "stdio.h"
#include "conio.h" 

void swap(int *a, int *b){
	int temp ;
	temp = *a;
	*a = *b;
	*b = temp;
}
//升序---简单选择排序
SelectionSortAsc(int *a,int n){
	int i,j,min;
	for( i = 0;i < 10; i++){
		min = i;
		for(j = i+1;j < 10; j++){
			if(a[j] < a[min]){
				min = j;	
			}	
		}
		if(min != i)		
		swap(&a[i],&a[min]);
	}
	printf("\n  ascending order:"); 				
} 
//降序---简单选择排序
SelectionSortDesc(int *a,int n){
	int i,j,max;
	for( i = 0;i < 10; i++){
		max = i;
		for(j = i+1;j < 10; j++){
			if(a[j] > a[max]){
				max = j;	
			}	
		}
		if(max != i)		
		swap(&a[i],&a[max]);
	}
	printf("\n  descending order:"); 				
} 
 main(){
	int i;
	int  a[20] = {10,8,6,5,3,2,9,7,4,1};
	SelectionSortAsc(a,10); 
	for(i = 0 ; i < 10; i++)
		printf("%d ",a[i]);
	printf("\n");	
	SelectionSortDesc(a,10);
	for(i = 0 ; i < 10; i++)
		printf("%d ",a[i]);
	getche();	
}

9,运行结果


参考:C语言选择排序详解及其实现   

          C语言实现基础算法大全


这篇关于基础算法之简单选择排序(selection sort)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!