冒泡排序
算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
直接上代码,复杂的话可以先看下面的
#include <stdio.h>
int main()
{
void swap(); //申明函数
int i,j; //定义变量
int n;
printf("请输入n的值");
scanf("%d", &n); //定义数组的数据个数
int a[n]; //定义一个数组
for(int i=0;i<n;i++){
scanf("%d", &a[i]);
} //录入数组数据
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
swap(&a[j],&a[j+1]);//交换顺序
}
}
}
for(int i=0;i<n;i++){
printf("%d ", a[i]);//输出排序后的数组
}
return 0;
}
void swap(int *x, int *y) {
int temp = *y;
*y = *x;
*x = temp;
}
以下部分仅仅保留了排序的主体部分,更容易理解,可结合上半部分参考
#include <stdio.h>
int main()
{
int a[8]={156,156,21,65,1,45,65,132}; //自定义一个数组
int i,j,t;
for(i=0;i<7;i++){
for(j=0;j<6;j++){
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<8;i++){
printf("%d ", a[i]);
}
return 0;
}
冒泡排序是十大经典排序中较为简单且稳定的一种
其余排序还有以下几种:
选择排序
插入排序
希尔排序
归并排序
快速排序
堆排序
计数排序
桶排序
奇数排序