C++简单选择排序

10 篇文章 1 订阅

C++简单选择排序

给定要排序的一组数中,选出最大(或者最小)的一个数与第一个位置的数进行交换,然后在剩下的数当中再找最大(最小0)的与第二个位置的数进行交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个元素)比较为止。

例如:

开始:1 3 5 7 9 0 2 4 6 8

①0 3 5 7 9 1 2 4 6 8

②0 1 5 7 9 3 2 4 6 8

③0 1 2 7 9 3 5 4 6 8

④0 1 2 3 9 7 5 4 6 8

⑤0 1 2 3 4 7 5 9 6 8

⑥0 1 2 3 4 5 7 9 6 8

⑦0 1 2 3 4 5 6 9 7 8

⑧0 1 2 3 4 5 6 7 9 8

⑨0 1 2 3 4 5 6 7 8 9

操作方法:

第一趟:假定第一个数为最小,第一个数与后面n-1个数进行元素比较,选择最小的记录下标,并与第一个记录进行交换

第二趟:从第二个记录开始的n-1个记录中再选出数最小的记录与第二个记录交换

以此类推...

第i趟,则从第i个记录开始与n-i+1个记录中选出最小数值记录与第i个记录交换

直到整个序列按值大小排序完成。

#include<iostram>
using namespace std;
void print(int a[], int n)
{  
    for(int j= 0; j<n; j++)
	{  
        cout<<a[j] <<"  ";  
    }  
    cout<<endl;  
}
void selectSort(int a[], int len)
{
 
	int minindex, temp;
	for(int i = 0; i<len-1;i++)
	{
	    minindex = i;
	    for(int j = i+1; j<len; j++)
		{
		    if(a[j]<a[minindex])
				minindex = j;
		
		}
		temp = a[i];
		a[i] = a[minindex];
		a[minindex] = temp;
		print(a,len);
	}
}
int main(int argc, char** argv) {
	int x[]={1,3,5,7,9,0,2,4,6,8};
	selectSort(x,10);
	return 0;
}

最坏时间复杂度:\large O(n^2)             空间复杂度:\large O(1)

最好时间复杂度:\large O(n^2)             不稳定

平均时间复杂度:\large O(n^2)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值