冒泡排序_時間複雜度:最好情況O(n),最壞情況O()。
選擇排序_時間複雜度:最好情況O(),最壞情況O()。
插入排序_時間複雜度:最好情況O(n),最壞情況O()。
快速排序_時間複雜度:最好情況O(),最壞情況O()。
#include <stdio.h>
#define SIZE 10
void quick(int x[],int ll,int rr){
if(ll>=rr){
return;
}
int i,j,k,temp,mid;
i=ll;j=rr;
mid=x[i];
while(i<j){
while(x[i]<=mid&&i<rr){
i++;
}
while(x[j]>=mid&&j>ll){
j--;
}
if(i<j){
temp=x[i];
x[i]=x[j];
x[j]=temp;
i++;j--;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
temp=x[j];
x[j]=mid;
x[ll]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
quick(x,ll,j-1);
quick(x,j+1,rr);
}
void insert(int x[]){
int i,j,temp,k;
for(i=0;i<SIZE-1;i++){
j=i+1;temp=x[j];
while(j>=0&&temp<=x[j]){
x[j]=x[j-1];
j--;
}
if(j!=(i+1)){
j++;
x[j]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
}
void choice(int x[]){
int i,j,temp,min,index,k;
for(i=0;i<SIZE;i++){
min=x[i];index=i;
for(j=i+1;j<SIZE;j++){
if(x[j]<min){
min=x[j];
index=j;
}
}
if(index!=i){
temp=x[i];
x[i]=min;
x[index]=temp;
for(k=0;k<SIZE;k++){
printf("%d ",x[k]);
}
printf("\n");
}
}
}
void bubble(int x[]){
int i,j,temp,k;
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]={77,34,29,54,12,49,63,8,19,10};
int i;
for(i=0;i<SIZE;i++){
printf("%d ",a[i]);
}
printf("\n");
bubble(a);
//choice(a);
//insert(a);
//quick(a,0,SIZE-1);
return 0;
}