冒泡法是一种简单的排序算法,其基本思路如下:
首先,它会遍历待排序的数列。从数列的第一个元素开始,依次比较相邻的两个元素。如果前一个元素比后一个元素大(针对升序排列,降序则相反),那么就交换这两个元素的位置。
这样一轮比较下来,最大(升序时)或最小(降序时)的元素就会 “浮” 到数列的末尾。
接着,对除了已经排好序的末尾元素之外的剩余数列,重复上述的比较和交换操作。每一轮都会把当前未排序部分中的最大(或最小)元素移到正确位置。
持续进行这样的循环,直到整个数列都被排序完成。例如,对于有 n 个元素的数列,总共需要进行 n - 1 轮比较。在每一轮中,比较的次数会逐渐减少,因为每一轮都会确定一个已经排好序的元素,从而减少后续需要比较的范围。通过不断地重复相邻元素比较和交换的过程,最终实现数列的有序排列。
冒泡法排序演示
#include <stdio.h>
void sort(int arr[],int n){for(int i=0;i<n-1;i++){for(int j=0;j<n-i-1;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}
}
int main(){int arr[]={8,9,8,5,1,2,5,3};int n=sizeof(arr)/sizeof(arr[0]);sort(arr,n);for(int i=0;i<n;i++){printf("%d ",arr[i]);}return 0;
}