目录
前言
我们的生活中时常会遇到大量的数据,他们或许有序或许杂乱无章,那么如何让一些杂乱无章的数据变得有序呢?本篇文章会让了解几种基础的排序算法。
1.冒泡排序(Bubble Sort)
概念
”冒泡排序“ 顾名思义,他像小鱼吐泡泡一样,每次吐出一个泡泡,后面的泡泡跟在前面的泡泡的后面,变成一连串的泡泡。
图解
那么代码如何实现呢?
代码实现
void Bubble_Sort(int a[]){
//外层循环用来控制排序的次数
for(int i=0 ; i<10-1 ; i++){
//内层循环控制比较的内容
for(int j=0 ; j<10-i-1 ; j++){
//比较当前位置和后一个位置的数据的大小
if(a[j] < a[j+1]){
//交换两个位置的数据
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}//if
}//for j
}//for i
//输出排序后的数据
for(int i=0 ; i<10 ; i++){
printf("%d ",a[i]);
}
}
//主函数
int main(){
//数组的定义
int a[10];
//循环对数组录入数据
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
}
//调用冒泡排序函数
Bubble_Sort(a);
return 0;
}
注意
- 冒泡排序是一个稳定的排序方法
- 每次循环都会找出最小或者最大的数字放到最后一个位置
2.选择排序(Selection Sort)
概念
“选择排序” 每次选择一个最大或者最小的数据,把他放在一个合适的位置。
图解
代码实现
void Selection_Sort(int a[]){
//外循环控制已排序的最后一个数据
for(int i=0 ; i<10 ; i++){
//记录其下标
int min=i;
//内循环控制未排序部分
for(int j=i+1 ; j<10 ; j++){
//未排序的数据和已排序的最后一个元素比较
if(a[j] < a[min]){
min = j; //比已排序数据更小记录其下标
}//if
}//for j
//min 如果被改变,那就代表有更小的数据
if(min != i){
//交换两个位置的数