排序算法之冒泡排序

#include <iostream>

using namespace std;

/**
一句箴言:n個元素從左至右依次兩兩對比,若左邊大於右邊,則交換位置,通過一輪交換,最右邊的那個則是最大元素。接下來將剩下的n-1 重複上一個過程

方法:從已排序元素倒着對比,若待排序元素小於當前比較元素,則互換位置。 若待排序元素大於當前比較元素,則說明已經該元素就該在此位置
**/
void maoPaoSort(int arr[], int n) {
	//每次循環只能找到最大的一個,有n個待排序,則須要n次比較
	for (int i = 0; i<n; i++) {
		//j < n -i 的緣由爲,外層每循環一次,已將待排序中最大的移動到了最右邊,只須要對剩下的元素冒泡便可
		for (int j =0; j< n -i; j++) {
			if (arr[j] > arr[j+1]) {
				swap(arr[j], arr[j+1]); 
			}
		}
	}
}


int main() {

	int arr[10] = {9,10,8,7,6,5,4,3,2,1};

	maoPaoSort(arr, 10);

	for(int i =0; i< 10; i++) {
		cout << arr[i] << "  ";
	}

	return 0;
}
相關文章
相關標籤/搜索