几种常见的排序算法

1、冒泡排序

算法描述:

几种常见的排序算法_第1张图片


代码实现:

 

void bubble_sort(int* a ,int n){
	bool changed;
	do{
		changed = false;
		for(int i = 1 ; i < n ; ++i){
			if(a[i] < a[i-1]){
				swap(a[i],a[i-1]);
				changed = true;
			}
		}
	}while(changed);
}


 

2、插入排序

算法描述:

几种常见的排序算法_第2张图片



代码实现:

 

void insert_sort(int* a , int n){
	for(int i = 1; i < n ; ++i ){
		int t  = a[i];
		int j;
		for( j = i ; j > 0 && t < a[j-1]; --j){
			a[j] = a[j-1];
		}
		a[j] = t;
	}
}


 

3、快速排序

算法过程描述:

几种常见的排序算法_第3张图片


代码实现:

 

void quick_sort(int* a , int n){
	if( n <= 1){
		return ;
	}

	if( n== 2){
		if(a[1] < a[0]){
			swap(a[1],a[0]);
		}
	}

	swap(a[n/2],a[0]);
	int jie = a[0];
	int* l = a + 1;
	int* r = a + n - 1;

	while( l < r ){
		while(l<r && (*l < jie)){
			++l;
		}

		while(a<r && (*r>=jie)){
			--r;
		}

		if(l < r){
			swap(*l,*r);
		}
	}

	if(*r < jie){
		swap(*r,a[0]);
	}

	quick_sort(a,r-a);
	quick_sort(r+1,n-1-(r-a));

}


4、选择排序

 

代码实现:

 

void choose_sort(int* a , int n){
	for(int i = 0 ; i < n -1 ; ++i ){
		int min = i;
		for(int j = i+1 ; j < n ; ++j ){
			if(a[j] < a[min]){
				min = j;
			}
		}

		swap(a[i],a[min]);
	}
}

 


算法描述:

几种常见的排序算法_第4张图片

 

你可能感兴趣的:(排序算法)