【算法】冒泡排序算法

冒泡排序算法

简介:冒泡排序是对数组进行排序的一种方式,常见的排序算法还有选择排序,插入排序、希尔排序、归并排序、堆排序等,这里介绍最简单的排序算法——冒泡排序。

思路

假设长度为n的数组arr,要按照从小到大排序。则冒泡排序的具体过程可以描述为:首先从数组的第一个元素开始到数组最后一个元素为止,对数组中相邻的两个元素进行比较,如果位于数组左端的元素大于数组右端的元素,则交换这两个元素在数组中的位置。这样操作后数组最右端的元素即为该数组中所有元素的最大值。接着对该数组除最右端的n-1个元素进行同样的操作,再接着对剩下的n-2个元素做同样的操作,直到整个数组有序排列。算法的时间复杂度为O(n^2)。

动画演示

冒泡排序演示

代码

#include <stdio.h>
bubbleSort(int arr[], int length) { //这里函数用形参
	for (int i = 0; i < length; i++) {
		for (int j = 0; j < length -  i - 1; j++) {
			if (arr[j] > arr[j + 1]) {
				int temp;
				temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
			}
		}
	}
}
main() {
	int arr[10]= {1423,23456,3678,4789,590,628,724,4568,956,10};
	int length;
	length = sizeof(arr)/sizeof(arr[0]);
	printf("排序前:") ;
	for(int i=0; i<length; i++) { //输出原始数据用于比较
		printf("%d\t",arr[i]);
	}
	printf("\n");
	bubbleSort(arr,length);
	printf("排序后:") ;
	for(int i=0; i<length; i++) { //输出排序后的结果
		printf("%d\t",arr[i]);
	}
	printf("\n");
}

执行结果

排序前:1423    23456   3678    4789    590     628     724     4568    956     10
排序后:10      590     628     724     956     1423    3678    4568    4789    23456
posted @ 2022-06-19 22:47  Hmi1234  阅读(34)  评论(0编辑  收藏  举报