冒泡排序(Bubble Sort):
要点:遍历数列、两两比较、交换数值
算法步骤:
- 比较相邻的两个元素,如果第一个比第二个大,就交换;
- 对每一对相邻的元素做相同的工作,从第一对到最后一对;
- 完成以后,最后一位就是最大的数;
- 对所有的元素重复以上的步骤,除了最后一个,直到没有要比较的数字;
动图演示:
C语言示例:
#include <stdio.h>
void bubble_sort(int arr[],int len){
int i,j,temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
int arr[]={22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
int len =(int)sizeof(arr)/sizeof(*arr);
bubble_sort(arr,len);
int i;
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
python示例:
def bubbleSort(arr):
for i in range(1,len(arr)):
for j in range(0,len(arr)-i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
return arr
C++示例:
#include<iostream>
using namespace std;
template<typename T>
void bubble_sort(T arr[],int len){
int i,j;
for(i=0;i<len-1;i++){
for(j=0;j<len-1;j++){
if(arr[j]>arr[j+1]){
swap(arr[j],arr[j+1]);
}
}
}
}
int main()
{
int arr[]={15,45,11,56,95,5,64,15,1,5,9};
int len=(int)sizeof(arr)/sizeof(*arr);
bubble_sort(arr,len);
for(int i=0;i<len;i++)
{
cout<<arr[i]<<' ';
}
cout<<endl;
float arrf= { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5 };
len=(float)sizeof(arrf)/sizeof(*arrf);
bubble_sort(arrf,len);
for(int i=0;i<len;i++)
{
cout<<arr[i]<<' '<<endl;
return 0;
}
}