目录
什么是冒泡排序?
冒泡排序的算法思想
算法图解
参考代码
运行结果
优化代码
运行结果
什么是冒泡排序?
将两个相邻的元素进行比较,如果前面的元素大(从小到大排序),就交换两个元素,重复这样往后依次操作,最终的结果是将一个数列按从大小或则从小到大的顺序排列;
冒泡排序的算法思想
1.先把第一个和第二个元素进行比较,如果大小顺序与目的顺序不同,就进行交换;
2.第一次比较后,把第二个和第三元素进行比较,如果与目的顺序不同,再进行交换;
3.重复上述操作,将这个数列遍历完一边后,最大或则最小的数(取决于你想排的顺序)就被放在了最后;
4.像这样,每遍历完一遍,就会将一个元素放在正确位置,所以我们遍历的次数等于所需要排列的元素个数减去一(即如果我们想要将10个数排序,就需要遍历9次);
算法图解
参考代码
#define _CRT_SECURE_NO_WARNINGS 1
#include
void Print(int arr[],int n)
{
int i = 0;
for (i = 0; i arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j +1]; //元素的交换
arr[j + 1] = tmp;
}
}
Print(arr,len); //打印函数,打印排序过程
printf("n");
}
return 0;
}
运行结果
代码优化
如果数列本是有序的,就不需要排序了。
优化代码
void Print(int arr[], int n)
{
int i = 0;
for (i = 0; i arr[j + 1])
{
flag = 0; //如果一次遍历数组中有一次交换,说明数组无序
int tmp = arr[j]; //将flag赋值变为0;若有序则不变
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
if (flag == 1) //若flag没改变,说明数组有序
{
break; //跳出循环
}
Print(arr, len);
printf("n");
}
Print(arr,len);
return 0;
}
运行结果
(应为一次)
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
单例模式简介 单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它是一种创建型模式,通常用于需要严格控制某个类的实例数量的情况。单例模式确保一个类在整个应用程序生命周期中只有一个实例,因此可以节省系统资源,同时提供了一个集中的访…