2018年8月10日 星期五

itsa [C_AR026-中]選擇排序法動態展示

1.輸入測資時需使用while,在輸入時以非整數做結束,例:字元( / * - + )
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;
}

沒有留言:

張貼留言