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

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

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PanDaoxi2020/article/details/120685849
今日推荐