//选择排序
#include <iostream>
using namespace std;
void print(int * a,int n)
{
for(int i = 0; i < n ; i++)
{
cout << a[i] << ' ';
}
cout << endl;
}
void sort(int * a, int n)
{
for(int i = 0; i < n - 1; i++)
{
int k = i; //k、j都是下标
for(int j =i + 1; j < n; j++)
{
if(a[j] < a[k])
{
k = j; //如果这里对值直接交换,那就变成冒泡了
//当时觉得这里可以用k++代替,后来发现
//如果每次的判断都为真时才可以使用k++
//但是这种情况基本不可能出现。
}
}
if(i != k) //如果出现了比i的下标更小的数,那么就交换
{
swap(a[i],a[k]);
}
print(a,10);
}
}
int main()
{
int a[10] = {1,4,7,2,5,8,3,6,9,0};
sort(a,10);
cout << "排序结果:" << endl;;
print(a,10);
}
/* 程序运行结果
0 4 7 2 5 8 3 6 9 1
0 1 7 2 5 8 3 6 9 4
0 1 2 7 5 8 3 6 9 4
0 1 2 3 5 8 7 6 9 4
0 1 2 3 4 8 7 6 9 5
0 1 2 3 4 5 7 6 9 8
0 1 2 3 4 5 6 7 9 8
0 1 2 3 4 5 6 7 9 8
0 1 2 3 4 5 6 7 8 9
排序结果:
0 1 2 3 4 5 6 7 8 9
*/
选择排序
最新推荐文章于 2022-08-23 16:09:03 发布