C++ 冒泡排序及优化

时间:2022-12-29 20:33:17

#include <iostream>
using namespace std;
int main(){
	int arr[] = {3,6,8,1,9,4};
	int temp;
	int len = sizeof(arr)/sizeof(arr[0]);
	//简单的冒泡排序
	for(int i=0;i<len;i++){
		for(int j=1;j<len-i;j++){
			if(arr[j-1] > arr[j]){
				temp = arr[j-1];
				arr[j-1]=arr[j];
				arr[j] = temp;
			}
		}
	}
	//优化后
	for(int i=0;i<len-1;i++){   
		bool exchange = false;  //设置交换变量  
		for(int j=1;j<len-i;j++){   
			if(arr[j-1]>arr[j]){  //如果前一位大于后一位,交换位置  
				temp = arr[j-1];  
				arr[j-1] = arr[j];  
				arr[j] = temp;  
				if(!exchange) exchange =true;  //发生了交换操作  
			}  
		}  
        if(!exchange) break;  //如果上一轮没有发生交换数据,证明已经是有序的了,结束排序  
    }  
	for(int i=0;i<len;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
return 0;
}
//1 3 4 6 8 9
//请按任意键继续. . .