1. 程式人生 > >【C語言】冒泡法排序

【C語言】冒泡法排序

1.冒泡演算法:

思路如圖所示(圖片來自bilibili UP:正月點燈籠)

解釋:冒泡演算法的思路通俗一點就是每次將自己想要的數(最大值和最小值)放到陣列的最後一位,然後每次迴圈n-1項就可以達到排序的目的了。

程式碼如下: 

#include "stdio.h"

void Bubble(int arr[],int n); //宣告冒泡演算法函式
void sort(int srr[],int n);//宣告檢索排序數列函式

int main(){
	int i,lenght;
	int arr[] = {1,4,5,3,2};//賦值排列陣列
	lenght = sizeof(arr)/sizeof(int);//計算陣列元素
	sort(arr,5);//呼叫檢索排序
	for(i = 0; i < lenght;i++){//輸出結果
		printf("%d\n",arr[i]);
	}
}


void sort(int arr[],int n){//每次冒泡演算法執行完畢,最小的數將會移動到最後一位。每次只需要檢索n-1 的陣列元素即可,故寫以下演算法
	int i;
	for(i = n;i > 1;i--){
		Bubble(arr,i);//5,4,3,2,1
	}
	
}

void Bubble(int arr[], int n){
	int i,temp;
	for(i = 1;i < n;i++){//每次檢索由排序傳來的n個數組元素,對其進行調換位置,將最小的放到最後一個元素
		if(arr[i] > arr[i-1]){
			temp = arr[i];//調換位置的通用演算法
			arr[i] = arr[i-1];
			arr[i-1] = temp;
		}
	}
}

結果如下: