2.選擇排序法:從最大或最小開始排序,這題是從最大
3.先找最大值與陣列編號按順序交換,交換後找次大,以此類推
例:42135
陣列編號:01234
第1次 最大值是5 跟4做交換(編號0) 輸出 52134
第2次 最大值是4 跟2做交換(編號1) 輸出 54132
#include<iostream>
using namespace std;
int main()
{
int N = 0, i = 0;
static int num[1500000]; //其實不用很大 大概最多到100就好
while (cin >> num[i++]);
N = i - 1;
for (int k = 0; k < N; k++)
{
if (k > 0)
cout << ",";
cout << num[k];
}
cout << endl;
for (int i = 0; i < N - 1; i++)
{
int max = i;
for (int j = i + 1; j < N; j++)
if (num[j] > num[max])
max = j;
if (max == i)
continue;
int tmp = num[i];
num[i] = num[max];
num[max] = tmp;
for (int k = 0; k < N; k++)
{
if (k > 0)
cout << ",";
cout << num[k];
}
cout << endl;
}
return 0;
}
沒有留言:
張貼留言