搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 虎亭据点 > 冒泡排序法三部曲终极版の最优的冒泡排序算法

冒泡排序法三部曲终极版の最优的冒泡排序算法

虎亭据点 2019-10-10
举报

对于数组{1,2,5,9,4,10,13,59,30}每进行一次排序,右侧的有效位就会加一,可是在之前的两种方法中,每次小循环的比较次数依然是数组长度-1

所以在最终优化版中,我们动态的修改每次小循环的次数,从而将冒泡排序法的速度提升到最快。


.h头文件

#pragma once

#ifndef _BUBBLE_H_

#define _BUBLE_H_

/*

*/

void sort(int* array,int m) 

{


printf("%d\n",m);

int border = m-1;  //记录排序的边界,每次排序到此处

for (int i = 0; i < m; i++)

{

int lastchange = 0;

int sorted = 1;   //每次排序前默认数组已经有序

for (int j = 0; j < border; j++)

{

if (array[j] < array[j + 1])

{

int temp = array[j];

array[j] = array[j + 1];

array[j + 1] = temp;

sorted = 0;   //发生了元素交换则将sorted置0

lastchange = j;  //记录最后一次发生交换的位置

}

}

border = lastchange;

if (sorted)

{

break;

}

}

}


#endif 


.c 主函数

#include<stdio.h>

#include"bubble.h"

int main()

{

int x = 0;

int array[] = {1,2,5,9,4,10,13,59,30};

x = sizeof(array) / sizeof(int);

sort(array,x);

for (int m = 0; m < sizeof(array) / sizeof(int); m++)

{

printf("%d\t",array[m]);

}

return 0;

}

运行结果


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《冒泡排序法三部曲终极版の最优的冒泡排序算法》的版权归原作者「虎亭据点」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注虎亭据点微信公众号

虎亭据点微信公众号:gh_08b5d93f8fa5

虎亭据点

手机扫描上方二维码即可关注虎亭据点微信公众号

虎亭据点最新文章

精品公众号随机推荐

举报