排序之冒泡排序

好,下面是简单排序的最后一种:冒泡排序;
主要思想
假如有一串无序数列,我们要将它排序。
我们先设想一下它的有序情况,每个元素与其他元素之间是不是都有一些必然关系。
就像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~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值