选择算法(选择排序)
考虑排序存储在数组A中的n个数:首先找出A中的最小元素并将其与A[1]中的元素进行交换,接着找出A中次最小元素并将其与A[2]中的元素进行交换。对A中前n-1个元素按该方式继续,该算法称为选择算法。
——算法导论P16
#include <cstdio>
#include <algorithm>
//#include <iostream>
//#include <cstdlib>
//#include <string>
using namespace std;
int sort_(int *a,int n){
int x = 1;
for(int i = 0; i < n; i++)
{
int q = 0;
int temp = a[i];
int wh = i;
for(int j = i; j < n; j++)
{
if(a[j] < temp)
{
temp = a[j];
wh = j;
}
}
swap(a[i], a[wh]);
printf("第%d次选择********************** \n",x);
x++;
for(int q = 0; q < n; q++)
{
printf("%d ",a[q]);
}
printf("\n\n");
}
}
int main (){
int n;
scanf("%d",&n);
int a[1000];
for(int i = 0; i < n; i++)
scanf("%d",&a[i]);
sort_(a,n);
printf("选择排序后结果为:\n");
for(int i = 0; i < n; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}