C語言_冒泡_選擇_插入_快排_第2輪代碼實現

冒泡排序_時間複雜度:最好情況O(n),最壞情況O(n^{2})。

選擇排序_時間複雜度:最好情況O(n^{2}),最壞情況O(n^{2})。

插入排序_時間複雜度:最好情況O(n),最壞情況O(n^{2})。

快速排序_時間複雜度:最好情況O(n\log _{2}n),最壞情況O(n^{2})。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章