[算法] c++實現 簡單的冒泡排序

開發工具  Dev-c++

#include <iostream>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
using namespace std;
#define MAX_LEN  10


//main入口 
int main(int argc, char** argv) {
	//變量聲明和初始化 
	int i,j,temp,len;
	bool bSwap;
	//產生隨機數(值爲0~100)
	int a_Chaos[MAX_LEN];  
	srand((int)time(0));
	for(int x=0;x<MAX_LEN;x++){
		a_Chaos[x] = random(100);
		cout<<"隨機數x"<<x<<"值是"<<a_Chaos[x]<<endl;
	}
	
	//獲取數組的長度,這邊用動態獲取,以便於是固定數組而不是隨機數組 
	len = sizeof(a_Chaos)/sizeof(a_Chaos[0]);
	//冒泡排序 
	for(i=0; i<len; i++){
		bSwap = false;
		//從高位往下遞減,使最大的數排在數組的最後,大端排序 
		for(j=len-1; j>i; j--){ //數組下標從0開始所以要減1,j>i用於減少排序次數 
			//對比下前一個數有沒比後一個數大 有的話就交換
			if(a_Chaos[j] < a_Chaos[j-1]){ //修改小於可以修改排序的方向 
				temp = a_Chaos[j];
				a_Chaos[j] = a_Chaos[j-1];
				a_Chaos[j-1] = temp;
				bSwap = true;
			}
		}
		//假如沒有發生交換,那說明已經是有序的了 
		if(!bSwap){
			break;
		}
	}
	
	//用於顯示數組
	for(i=0; i<len; i++){
		cout<<"冒泡排序後數組a_Chaos["<<i<<"]的值是 "<<a_Chaos[i]<<endl;
	} 
	return 0;
}

配上冒泡算法的動態圖

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