简介:冒泡排序是对数组进行排序的一种方式,常见的排序算法还有选择排序,插入排序、希尔排序、归并排序、堆排序等,这里介绍最简单的排序算法——冒泡排序。
假设长度为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