冒泡排序法三部曲终极版の最优的冒泡排序算法
Posted 虎亭据点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序法三部曲终极版の最优的冒泡排序算法相关的知识,希望对你有一定的参考价值。
对于数组{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;
}
运行结果
以上是关于冒泡排序法三部曲终极版の最优的冒泡排序算法的主要内容,如果未能解决你的问题,请参考以下文章