冒泡排序算法
- 时间复杂度:O(n²)
- 算法稳定性:稳定排序算法
bubble()对于一次排序后,可以得到一个最大值排在arr[ ]末尾。
void bubble(int arr[], int n){
int i;
int temp;
for(i=0; i<n-1; i++){
if(arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
bubbleSort()每次传值给bubble(),arr[ ]的长度减1。
从后往前,以此得到一个最大的数,使得arr[ ]数组从小到大排序。
void bubbleSort(int arr[], int n){
int i;
for(i=n; i>=1; i--){
bubble(arr, i);
}
}
完整代码
#include <stdio.h>
void bubble(int arr[], int n){
int i;
int temp;
for(i=0; i<n-1; i++){
if(arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
void bubbleSort(int arr[], int n){
int i;
for(i=n; i>=1; i--){
bubble(arr, i);
}
}
int main(){
int i;
int arr[] = {5,4,6,3,2,8,9,7,1};
bubbleSort(arr, 9);
for(i=0; i<9; i++){
printf("%d\n", arr[i]);
}
return 0;
}