#include "stdio.h"
int a[10] = {10,9,8,7,6,5,4,3,2,1};
display(int a[],int n)
{
int i;
for(i = 0; i < n; i ++)
printf("%d ",a[i]);
printf("\n");
}
int qsort(int a[], int n)//快速排序算法
{
int i = 0, j = n - 1;
int k = a[i];
if (0 < n - 1)
{
while (i < j)
{
while (i < j && a[j] > k)
j--;
if (i < j)
a[i++] = a[j];
while (i < j && a[i] < k)
i++;
if (i < j)
a[j--] = a[i];
display(a,n);
}
a[i] = k;
display(a,n);
qsort(a, i);
qsort(a + i + 1, n - i - 1);
}
return 0;
}
void csort(int a[], int n)//插入法
{
int i,j;
int min;
for ( i = 0; i < n; i ++)
{
min = a[i];
for ( j = n + i -1; j >= 0 && a[j] > min; j --)
a[j + 1] = a[j];
a[j + 1] = min;
}
for (i = 0;i < n; i ++)
a[i] = a[i + n];
}
void msort(int a[], int n)//冒泡法
{
int i,j;
int key;
for (j = 0; j < n-1; j ++)
{
for (i = 0;i < n - j -1;i ++)
{
if (a[i] > a[i + 1])
{
key = a[i];
a[i] = a[i + 1];
a[i + 1] = key;
}
display(a,n);
}
}
}
void xsort(int a[], int n)//选择法
{
int i,j,k;
int min = 0,key;
for (i = 0;i < n - 1; i ++)
{
min = a[i];
for (j = i;j < n; j ++)
{
if (a[j] < min)
{
min = a[j];
k = j;
}
}
key = a[i];
a[i] = min;
a[k] = key;
}
}
main()
{
int i;
int n = sizeof(a) / sizeof (int);
xsort(a,n);
display(a,n);
// printf("\n");
// csort(a,n);
//display(a,n);
// msort(a,n);
return 0;
}