選擇排序

選擇排序,排序字母時存在不穩定排序

代碼:

#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
int Sort(int A[],int n)
{
	int sum=0,minj,i,j;
	for( i=0;i<n;i++)   
	{
		minj=i;
		for( j=i;j<n;j++)    //選出來每次的最小值
		{
			if( A[j]<A[minj] )  
			{
				minj=j;
			}	
		}
		swap( A[i], A[minj] );
		if(i!=minj)    //排除i的位置是最小值的情況,如果i是最小值就不用判斷了, 
		sum++; 
	}
	return sum; 
}
int main()
{
	int n,sw,A[105];
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>A[i];
	sw = Sort( A,n );
	for(int i=0;i<n;i++)
	printf("%d%c",A[i],i==n-1?'\n':' ');
	cout<<sw;
	return 0;
}
/*
輸入: 
6
5 6 4 2 1 3 
輸出:
1 2 3 4 5 6
4             //4表示交換的次數
*/ 




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