#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
void selsort(int[]); // 选择排序
void insort(int[]); // 插入排序
void bubsort(int[]); // 冒泡排序
void selsort(int a[])
{
int i,j,k;
int min;
printf("选择排序:\n");
for (i=0;i<MAX-1;i++) {
min = i;
for (j=i+1;j<MAX;j++) {
if (a[min] > a[j]) {
min = j;
}
}
if (min != i) {
SWAP(a[min],a[i]);
}
printf("第%d次排序结果:",i+1);
for (k=0;k<MAX;k++) {
printf("%d ",a[k]);
}
printf("\n");
}
}
void insort(int a[])
{
int i,j,k;
int min;
printf("插入排序:\n");
for (i=0;i<MAX-1;i++) {
min = i+1;
for (j=0;j<=i;j++) {
if (a[j] > a[min]) {
SWAP(a[j],a[min]);
}
}
printf("第%d次排序结果:",i+1);
for (k=0;k<MAX;k++) {
printf("%d ",a[k]);
}
printf("\n");
}
}
void bubsort(int a[])
{
int i,j,k;
int flag;
printf("冒泡排序:\n");
for (i=0;i<MAX-1;i++) {
flag = 0;
for (j=0;j<MAX-i-1;j++) {
if (a[j+1] < a[j]) {
SWAP(a[j+1],a[j]);
flag = 1;
}
}
printf("第%d次排序结果:",i+1);
for (k=0;k<MAX;k++) {
printf("%d ",a[k]);
}
printf("\n");
}
}
int main(void) {
int number[MAX] = {0};
int i;
srand(time(NULL));
printf("排序前:");
for(i = 0; i < MAX; i++) {
number[i] = rand() % 100;
printf("%d ", number[i]);
}
printf("\n请选择排序方式:\n");
printf("(1)选择排序\n(2)插入排序\n(3)冒泡排序\n:");
scanf("%d", &i);
switch(i) {
case 1:
selsort(number); break;
case 2:
insort(number); break;
case 3:
bubsort(number); break;
default:
printf("选项为:(1..3)\n");
}
return 0;
}