// 简单选择排序
// 输出显示每个排序步骤
// 排序数字最大值不超过1000000
// 输入:
// 排序的数字个数n,及对应的排序数组
// 输出:
// 第1行:初始序列
// 第2行到第n+1行:输出排序的过程
// 第n+2行:排序结果
#include <iostream>
#include <stdlib.h>
using namespace std;
#define INF 1000000
template<class T>
void SelectSort(T A[], int n)
{
int small;
Print(A,n,-1);
for (int i=0;i<n-1;i++)
{
small=i;
for (int j=i+1;j<n;j++)
if (A[j]<A[small])
small=j;
swap(A[i],A[small]);
Print(A,n,i);
}
Print(A,n,n);
}
template < class T >
void Print(T A[], int n , int i)
{
int j;
if (i>=0 && i<n)
{
std::cout<<"第 "<<i+1<<" 趟 : ";
std::cout<<"( ";
for (j=0;j<=i;j++)
std::cout<<A[j]<<" ";
std::cout<<") ";
for (j=i+1;j<n;j++)
std::cout<<A[j]<<" ";
std::cout<<endl;
}
else if (i<0 || i>=n)
{
if (i<0)
std::cout<<"初始数列 : ( ";
else
std::cout<<"排序结果 : (";
for (j=0;j<n;j++)
std::cout<<A[j]<<" ";
std::cout<<")"<<endl;
}
}
// 应用举例
int main()
{
int n;
std::cin>>n;
int *a;
a=new int [n];
for (int i=0;i<n;i++)
{
std::cin>>a[i];
}
SelectSort(a,n);
return 0;
}
注:纯属娱乐,代码不是非常简洁,欢迎交流
简单选择排序
最新推荐文章于 2021-04-05 11:25:45 发布