排序之冒泡排序

来源:互联网 发布:mysql如何删除数据库 编辑:程序博客网 时间:2024/05/20 04:27

好,下面是简单排序的最后一种:冒泡排序;
主要思想
假如有一串无序数列,我们要将它排序。
我们先设想一下它的有序情况,每个元素与其他元素之间是不是都有一些必然关系。
就像5和10在从小到大序列中,5是不是必然在10的左边,虽然我们不知道他们是否挨着或是中间隔了几个数,但我们肯定他们的相对位置必然是5在10左边,10在5右边。
那么冒泡排序就是根据这个原理。每个元素和他身边的元素比较,如果其大小关系和位置不对应,就交换。这样一个很小的数在交换中不断被换向小的一方,很大的数在交换中,被换向大的一方。
举个栗子
3 5 2 6 1
就比如从数组最后开始,1<6,1与6交换
3 5 2 1 6
1又<2 在交换
3 5 1 2 6
不说了,在交换,直到
1 3 5 2 6
这样1的位置就确定了。然后再对于1右边的数冒泡一轮
2就确定了
经过4次后就排序完成。
代码其实可以不必看,因为只要你理解了,代码很好实现,再说每个人代码风格不同。
但我还是无耻的。。
void mp()

for(int i=start;i<=end;i++)
for(int j=end;j>i;j–)//start到i,经过前面的冒泡,已经有序
{
if(a[j-1]>a[j])
swap(a[j-1],a[j]);//交换
}
}
嘿嘿嘿
end~~~~~

原创粉丝点击