#include <iostream>
using namespace std;
class select
{
private:
int *arr;//數組
int chang;//長度
int temp;
void show(int *aa, int length);//顯示得內部功能實現
void selectSort(int *aa, int length);//從小到大排序
void selectSort1(int *aa, int length);//從大到小排序
void swap(int &a, int &b);
public:
select(int *aa, int c);//構造函數
~select();//析構函數
void show();//顯示得外部調用接口
void selectSort();//從小到大排序
void selectSort1();//從大到小排序
};
//構造函數
select::select(int *aa, int c)
{
arr = aa;
chang=c;
}
//析構函數
select::~select()
{
cout << "結束" << endl;
}
//顯示
void select::show()
{
show(arr,chang);
}
void select::show(int *aa, int length)
{
for (int i = 0; i<length; i++)
printf("%d ", aa[i]);
printf("\n");
}
//從小到大排序
void select::selectSort()
{
selectSort(arr, chang);
}
void select::selectSort(int *aa, int length)
{
int i, j, k;
for (i = 0; i<length; i++)
{
k = i;
for (j = i + 1; j<length; j++)
{
if (aa[j]<aa[k])
k = j;
}
swap(aa[i], aa[k]);
}
}
//交換
void select::swap(int &a, int &b)
{
temp = a;
a = b;
b = temp;
}
//從大到小排序
void select::selectSort1()
{
selectSort1(arr, chang);
}
void select::selectSort1(int *aa, int length)
{
int i, j, k;
for (i = 0; i<length ;i++)
{
k = i;
for (j = i + 1; j<length; j++)
{
if (aa[j]>aa[k])
k = j;
}
swap(aa[i], aa[k]);
}
}
int main()
{
int arr[10] = { -1,90,3,23,994,-23,9,10,100,-2 };
int len = sizeof(arr) / sizeof(int);
select s(arr, len);
printf("原始數組: ");
s.show();
s.selectSort();
printf("從小到大排序: ");
s.show();
s.selectSort1();
printf("從大到小排序: ");
s.show();
return 0;
}