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


