冒泡排序算法的实现,
在2010测试通过,排序了int Array[100000]用了30秒的时间.有点意思.
然后调用我上一篇写的二分查找算法,用了15次就查找出来了.世界又美好了一些呵呵呵呵.
下面是代码.
对了.如果你看了.请顶一下好吧.也算对我的支持,如果写的太烂,你帮忙提点意见.谢谢了.
/*
冒泡排序算法:优点:1.“编程复杂度”很低,很容易写出代码;
2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。
缺点:使用范围:
原理:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
时间复杂度:O(n^2)
注意事项:
*/
#ifndef MY_maopao_h
#define MY_maopao_h
#ifdef __cplusplus
extern "C"
{
#endif
void myMaoPaoShow(int *Array, int lenght);
#ifdef __cplusplus
}
#endif
#endif
源文件:
#include "myMaoPao.h"
void myMaoPaoShow(int *Array, int lenght)
{
int inner = 0;
int outer = 0;
int flag = 1;
int change = 0;
if(Array == 0 || lenght == 0)
return;
for(outer = 0; outer<lenght -1 && flag;outer++)
{
flag = 0;
inner = 0;
for(;inner<lenght-outer-1; inner++)
{
if(Array[inner]>Array[inner+1])
{
change = Array[inner+1];
Array[inner+1] = Array[inner];
Array[inner] = change;
flag = 1;
}
}
}
}