Skip to content

Latest commit

 

History

History
64 lines (60 loc) · 1.65 KB

C++排序算法之优化冒泡排序.md

File metadata and controls

64 lines (60 loc) · 1.65 KB

在这里插入图片描述 上次文章中的位置: 在这里插入图片描述 原来的代码:

//Author:Pan Daoxi
#include <iostream>
using namespace std;
const int N=101;
int main(){
	int n,a[N];
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	for(int i=n-1;i>=1;i--){
		for(int j=0;j<i;j++){
			if(a[j]>a[j+1]){ // 如果大,就放到后面去,和小的交换位置 
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
} 

优化后代码:

//Author:Pan Daoxi
#include <iostream>
using namespace std;
const int N=101;
int main(){
	int n,a[N];
	bool flag; // 优化:判断交换的开关 
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	for(int i=n-1;i>=1;i--){
		flag=true; // 判断是否交换 
		for(int j=0;j<i;j++){
			if(a[j]>a[j+1]){ 
				swap(a[j],a[j+1]);
			}
			flag=false; // 已经交换 
		}
		if(flag){
			break;
		} 
	}
	for(int i=0;i<n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
} 

在这里插入图片描述