排序---选择排序
选择排序的思路是:先假定一个数十最小的,后面的数与之比较,如果比它小,那么记录下标,替换最小值;依次往复,则排序完毕
选择排序的时间复杂度是o(n^2)
#include<stdio.h>
#include<stdlib.h>
#define N 100
int buffer[N];
void init_array(int a[],int n);
void print_array(int a[],int n);
void select_array(int a[],int n);
int main()
{
init_array(buffer,N);
printf("before sort\n");
print_array(buffer,N);
printf("affter sort\n");
select_array(buffer,N);
print_array(buffer,N);
}
void init_array(int a[],int n)
{
int i;
for(i=0;i<n;i++)
a[i]=rand()%1000;
}
void print_array(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}
void select_array(int a[],int n)
{ int min,i,j,index;
for(i=0;i<n-1;i++)
{
min=a[i];
for(j=i+1;j<n;j++)
{
if(a[j]<min)
{
min=a[j];
index=j;
}
}
if(min!=a[i])
{
a[index]=a[i];
a[i]=min;
}
}
}