冒泡排序
冒泡排序是一种常用且非常简单的排序法,对数组内的元素进行比较排序,它的算法描述如下:
- 比较相邻的两个元素,如果第一个比第二个大,就交换它们的位置
- 对每一对相邻元素都进行比较,比较完后找到最大值
- 重复以上步骤,每次比较次数减一次,直到不需要进行比较
冒泡排序具体实现过程:
- 首先定义一个无序数组
- 使用两个for循环,外循环每次执行次数减一次,内循环进行元素比较
参考代码:
#include
#include
int main(void)
{
int arr[10];
int n = sizeof(arr)/sizeof(arr[0]);
int temp = 0;
printf("请输入%d个整数:",n);
for(int i=0;iarr[j+1])
{
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
printf("排序后的数列:");
for(int i=0;i
改进优化:如果在一次冒泡中没有进行交换,表明数列已经有序则不需要再进行冒泡,然后退出。
使用标志位来记录有无元素位置交换。
参考代码:
#include
#include
int main(void)
{
int arr[10];
int n = sizeof(arr)/sizeof(arr[0]);
int temp = 0;
int flag = 0;//默认为有序(改进)
printf("请输入%d个整数:",n);
for(int i=0;iarr[j+1])
{
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
flag = 1;
}
}
if(flag == 0){
break;
}
}
printf("排序后的数列:");
for(int i=0;i
Original: https://www.cnblogs.com/codecp/p/15335438.html
Author: 君有云
Title: 冒泡排序
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714820/
转载文章受原作者版权保护。转载请注明原作者出处!