问题描述
假设用户通过键盘输入一个整形数列。编写一个程序,将其按照从小到大的顺序重新排列。
问题分析
假设有n个数据将要参与排序操作,则具体的排序过程可以描述为:首先从n个数据中选择一个最小的数据,并将它交换到第1个位置;然后再从后面n-1个数据中选择一个最小的数据,并将它交换到第2个位置;依次类推,直至最后从两个数据中选择一个最小的数据,并将它交换到第n-1个位置为止,整个排序操作结束。
程序代码
#include <iostream>
#define NUM 10
using namespace std;
int *select_sort(int a[])
{
for (int i = 0; i < NUM - 1; i++)
{
int min_value_index = i;
for (int j = i + 1; j < NUM; j++)
if (a[j] < a[min_value_index])
min_value_index = j;
if (min_value_index != i)
{
int temp = a[i];
a[i] = a[min_value_index];
a[min_value_index] = temp;
}
}
return a;
}
int main() {
int data[NUM];
cout << "Enter " << NUM << " integers." << endl;
for (int i = 0; i < NUM; i++)
cin >> data[i];
int *res;
res = select_sort(data);
for (int i = 0; i < NUM; i++)
cout << res[i] << endl;
cout << endl;
system("pause");
return 0;
}