算法思想:将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找最小值元素,与该序列中第一个元素A[0]交换,这样的子序列(A[0])有序,下一趟排序在待排序子序列(A[1]~A[n-1])中进行。第i趟排序在待排序子序列(A[i-1]~A[n-1])中,找最小值元素,与该子序列中第一个元素A[i-1]交换。经过n-1趟排序后使得初始化序列有序。
#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
int main()
{
int a[100];
int i,j,n,small;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
{
small=i;//假定每次排序的序列的第一个元素最小
for( j=i+1;j<n;j++)
{
if(a[j]<a[small])
small=j;//存储最小的数位置
}
if(small!=i) //如果第一个元素不是最小的
swap(&a[i],&a[small]);//将每次最小的数与第一个元素进行交换
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
本文深入探讨了选择排序算法的思想、实现以及其在不同场景下的应用。通过具体代码示例,展示了如何在C++中实现选择排序,并对其效率进行了分析。
1290

被折叠的 条评论
为什么被折叠?



