vlambda博客
学习文章列表

一点编程——冒泡排序


跟着小编学编程




作为理工科的大家是不是都学过一些编程语言VB,C语言,Python……你们有没有看到过这样的标题:

学会了编程我的工资别人高一倍

你是不是也心动过,如果你想利用零碎的时间来学习,关注我,接下来的时间跟随小编一起来学习,我们会用最简单的理解方式为大家呈现一些编程算法,跟着文章一起思考,锻炼你的思维吧!


今天小编为大家带来冒泡排序,看完这个,不仅能学会冒泡排序,还能发现计算机的奥妙所在!


冒泡排序:


1、简易理解:将一些混乱的数字比作水中的气泡,小气泡率先从水底升上去,从而得出这些气泡的先后顺序。

一点编程——冒泡排序


2、主要思路:比较两个相邻的元素,相对大的放在后面,相对于小的放在前面。


3、详细解释:

以(5,15,4,10,7,16)为例:按照从小到大排列


(1)从最后一个元素16开始依次往左看,与7比较,大小顺序正确,两元素位置不变,得后两位为7,16。

接着最前端元素7与原序列中前一元素10比较,大小顺序错误,二者调换,得后三位为7,10,16。

再接着7与前一元素4比较,大小顺序正确,得后四位为4,7,10,16。

4与前一元素15比较,大小顺序错误,二者调换,得后五位为4,15,7,10,16。

4与前一元素5比较,大小顺序错误,二者调换,得序列4,5,15,7,10,16。


(2)通过上面的第一次排序我们可以发现,第一个元素是4,并且还是最小,在之后的排序中它的位置不会再改变了。

所以在第二次排序中我们按照上面的方法直接从最后一个元素开始比较到第二个元素即可。

这样,每进行一轮的排序,我们就可以得到一个稳定位置的数字了。

这次你来试试,从16开始以此往左到5进行比较。

答案

点击下方空白处获得答案

4,5,7,15,10,16

得到稳定位置数5。

(3)第三轮,结果为4,5,7,10,15,16.我们会发现,到第三轮的时候这组数据已经排好序了。


那么我们就不用继续了吧?

是的,从人的角度来看不用继续了。

但是如果让计算机来执行,那就还会继续进行下去一直到第6轮。因为它不具有我们人类的整体观,无法每一步都能主动的发现数据情况。

所以我们就开始给它进行一些拟人优化,让它在特殊情况下主动做出一些行为。

我们可以把这个过程理解为现阶段的人工智能,通过为了计算机程序的运行添加一定的条件来使计算机运行的更加迅速。

而包括以冒泡排序在内的各种方法我们称之为算法。


举一反三:

在学校中如果老师给我们一份上百页的纸质文件让我们根据学号排序,我们应该怎么排序会更快一点呢?

冒泡算法的c++语言的实现:

#include<iostream>

using namespace std;

void main(){

         void maopao(int *p,int n);

         int a[5],i;

         for(i=0;i<5;i++)

                  cin>>a[i];

         maopao(a,5);

         for(i=0;i<5;i++)

                  cout<<a[i]<<" ";

}

void maopao(int *p,int n){

         int temp,flag,i,j,k,pos=0;

         for(i=0;i<n-1;i++)

         {

                  k=pos;flag=1;

                  for(j=n-1;j>k;j--)

                  {

                          if(*(p+j)<*(p+j-1)){

                                   temp=*(p+j);*(p+j)=*(p+j-1);*(p+j-1)=temp;

                                   flag=0;pos=j;

                          }


                  }

                  if(flag)return;

         }

}



看完文章,点亮在看吧