#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;
}