#include <stdio.h>
#define SIZE 10
void quickSort(int x[],int indexL,int indexR){
int i,j,mid,temp,k;
i=indexL;j=indexR;mid=x[i];
if(i>=j){
return;
}
while(i<j){
while(i<indexR&&x[i]<=mid){
i++;
}
while(j>indexL&&x[j]>=mid){
j--;
}
if(i<j){
temp=x[i];
x[i]=x[j];
x[j]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
if(j!=indexL){
temp=x[j];
x[j]=mid;
x[indexL]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
quickSort(x,indexL,j-1);
quickSort(x,j+1,indexR);
}
void insertSort(int x[]){
printf("insertSort:\n");
int i,j,temp,index,k;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
for(i=0;i<SIZE-1;i++){
temp=x[i+1];index=i+1;
for(j=i+1;j>=0;j--){
if(temp<x[j]){
x[j+1]=x[j];
index=j;
}
}
if(index!=i+1){
x[index]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
}
void choiceSort(int x[]){
printf("choiceSort:\n");
int i,j,temp,k;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
int min,index;
for(i=0;i<SIZE-1;i++){
min=x[i];index=i;
for(j=i+1;j<SIZE;j++){
if(min>x[j]){
min=x[j];
index=j;
}
}
if(i!=index){
temp=x[i];
x[i]=min;
x[index]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
}
void bubbleSort(int x[]){
printf("bubbleSort:\n");
int i,j,temp,k;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
for(i=0;i<SIZE;i++){
for(j=i+1;j<SIZE;j++){
if(x[i]>x[j]){
temp=x[i];
x[i]=x[j];
x[j]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
}
}
int main() {
int a[SIZE]={11,44,22,23,77,89,31,25,29,10};
int kind;
printf("\tMenu\n\t[1]bubbleSort\n\t[2]choiceSort\n\t[3]insertSort\n\t[4]quickSort\n");
scanf("%d",&kind);
switch(kind){
case 1:
bubbleSort(a);break;
case 2:
choiceSort(a);break;
case 3:
insertSort(a);break;
case 4:
printf("quickSort:\n");
int s;
for(s=0;s<SIZE;s++){
printf("%d ",a[s]);
}
printf("\n");
quickSort(a,0,SIZE-1);
break;
default:
printf("Input ERROR\n");
}
return 0;
}