八大排序算法之一冒泡排序
来源:互联网 发布:phpsys cms 编辑:程序博客网 时间:2024/05/16 08:48
冒泡排序的思想:两两比较,小的向前走。一趟下来,最大的数沉在最后面。
特点:时间复杂度:0(n^2) 空间复杂度: 0(1) 稳定性:稳定
待排序序列: 4 7 0 9 2 (4与7比较,不用交换。7与0比较交换。------->4 0 7 9 2------->7与9比较,不用交换。9与2比较交换------>4 0 7 2 9比较结束,得到下面的)
4 0 7 2 9 (一趟)
0 4 2 7 9
0 2 4 7 9
0 2 4 7 9
代码如下:
void BubbleSort(int *arr,int len){
int tmp;
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1;j++)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
void show(int *arr,int len)
{
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n ");
}
int main()
{
int arr[5]={4,0,7,9,2};
int len=sizeof(arr)/sizeof(arr[0]);
show(arr,len);
BubbleSort(arr,len);
show(arr,len);
return 0;
}
优化的代码如下:一趟的排序过程中是否发生数据交换,如果没有则说明已经有序,无需再次交换。
void BubbleSort(int *arr,int len)
{
int tmp;
bool flg=false;
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)//i=0是一趟排序结束,最后一个数已经有序 i=1时最后两个数已经有序
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flg=true;//发生数据交换了
}
}
if(!flg)//没有发生数据交换
{
return ;
}
}
}
阅读全文
0 0
- JAVA八大排序算法之一冒泡排序
- 八大排序算法之一冒泡排序
- 八大排序算法-冒泡排序
- 八大排序算法-冒泡排序
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序学习之一冒泡排序
- 八大算法之冒泡排序
- 八大排序之冒泡算法
- 【算法-排序之一】冒泡排序
- 【算法-排序之一】冒泡排序
- 【算法-排序之一】冒泡排序
- 【算法-排序之一】冒泡排序
- 八大排序算法学习笔记:冒泡排序
- 八大排序算法之冒泡排序
- 八大排序算法之冒泡排序
- 八大排序算法(五)冒泡排序
- 八大排序算法冒泡排序法
- email表单验证的js代码
- Heuristic Search之Greedy Best First Search
- 剑指offer——面试题17:合并两个排序的链表(非递归方法和递归方法)
- 一图流之(一)
- 工厂方法模式
- 八大排序算法之一冒泡排序
- python wordcloud
- Java编程风格
- 关于Automotive SPICE
- 闲话矩阵求导
- NOIP2017模拟赛 不等数列(dp)
- 图像分割之 Geodesic segmentation 和 Graph-Cut
- 到底什么时候该使用MQ
- JAVA:打地鼠文字游戏