C++入门手写简单选择排序

#include "stdio.h"
#define MAX 100
struct slist
{
    
    
	int a[MAX];
	int len;
};
//简单选择排序
void fun(struct slist *s)
{
    
    
	int i,j,min;
	int t;
	for(i=0;i<s->len-1;i++)
	{
    
    
		min=i;
		for(j=i+1;j<s->len;j++)
		{
    
    
			if(s->a[j]<s->a[min])
			{
    
    
				min=j;
			}
		}
		//找出最小元素 是 s->a[min]
		if(min!=i)
		{
    
    
			t=s->a[i];
			s->a[i]=s->a[min];
			s->a[min]=t;
		} 
	}
	//输出
	for(i=0;i<s->len;i++)
	{
    
    
		printf("%d\t",s->a[i]);
	} 
	
 } 

void main()
{
    
    
	int i;
	struct slist s;
	s.len=0;
	for(i=0;i<10;i++)
	{
    
    
		printf("请输入第%d个元素:",s.len+1);
		scanf("%d",&s.a[s.len]);
		s.len++; 
	}
	fun(&s);
}


简单选择排序其实是冒泡排序的优化,不同的就是将每一次所有都可能参与交换的操作优化为了每一次出一个假象值,用假象最值和其他的只比较不交换,最后全比较完了,再交换,不过这样也导致了,冒牌排序每一次确定的数据在后面,而简单选择排序在前面

猜你喜欢

转载自blog.csdn.net/dudadudadd/article/details/112570319