冒泡排序(C语言)

冒泡排序:

算法思想: 以升序为例,将相邻的俩个数进行比较,如果左边数字大于右边数字,那么将这俩个数字进行交换;(降序则相反,如果左边数字小于右边数字则交换),一直到俩俩相邻的数字左边都小于右边为止(降序则相反)。

以升序为例:
冒泡排序(C语言)

代码实现:

#include <stdio.h>
//打印数组
void PrintArr(int arr[], int size) {
	for (int i = 0; i < size; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
}
//冒泡排序
void BubbleSort(int arr[], int size){
	int i, j;

	for (i = 0; i < size-1; i++){	//要走的趟数
		int isSorted = 1;
		for (j = 0; j < size-1-i; j++){	//每走一趟就排除过走过的趟数(也就是排除过排序好的趟数)
			if (arr[j] > arr[j+1]){		//俩数前者大于后者,进行交换,确保每次右边大于左边
				int tmp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = tmp;

				isSorted = 0;	//如果代码执行到了这里说明还是有乱序
			}
		}
		if (isSorted == 1){		//如果运行带了这里,则说明排序就绪
			break;
		}
	}
}
int main(){
	int arr[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
	int size = sizeof(arr) / sizeof(int);
	BubbleSort(arr, size);
	PrintArr(arr, size);
	printf("\n");
	return 0;
}

输出效果:
冒泡排序(C语言)