冒泡排序

2019-08-16 09:49:38来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

冒泡排序

1、冒泡排序:
工作原理:依次相邻元素进行比较,将小数放在前面,大数放在后面,每一次扫描是将最大的数放在最右边,每次扫描完之后,下次扫描的个数减一,直到所有的数都放好位置。即第一次扫描:比较第一个数和第二个数,判断大小,小数在前,大数在后,
接着比较第二个数和第三个数,依次比较,直到最后一个数。此时最大的数在最后一个位置上了。第二次扫描:比较从第一个数和第二个数,判断大小,小数在前,大数在后,直到到倒数第二个数为止。同样的方法扫描n次。
本质是每扫描一次就拍好了一个最大值的位置,故叫做冒泡排序。

int [] a ={0,56,6,8,9,10};
int len = 6;
         //这里要明白
         for(int i=0;i<len-1;i++) {  //这层循环控制的是需要排序的数的个数,即控制扫面的轮数
                  Boolean  IsChange=false;//这是冒泡改进的地方,增加一个标志来判断是否已经提前排好序了   //这里要注意由于比较的是在一个循环下前一个数跟后一个数比较
                  for(int j=0;j<len-i-1;j++) {   //这层循环是控制每一轮扫描之后,将最大的数放在最右边
                    //这里的j<len-i-1要注意边界的原因,所以是j<len-i-1
                      if(a[j]>a[j+1]){ //相邻元素比较 ,交换
                          int temp=a[j];
                          a[j]=a[j+1];
                          a[j+1]=temp;
                          IsChange=true;//如果一次扫描完之后都没发生任何的交换,则表明已经排好序了
                      }
                  }
                  if(!IsChange){
                      System.out.println("结束排序"+a);
                      return;
                  }
             }

2、插入排序:

工作原理:通过构建将整个待排序的序列分成有序序列和无序序列,从无序序列当中选择一个元素插入待有序序列中。这里需要注意的是,最初将整个序列的第一个数作为有序序列,后面n-1个数作为无序序列。从无序序列选择第一个数开始插入有序序列中,插入的方式是从右向左开始扫描有序序列,最右边的数是有序序列中最大的数,依次比较,待排序的数比已排好的数小,则将已排好的数往后移,最后找出待插入的数合适的位置插入。


原文链接:https://www.cnblogs.com/2019lgg/p/11138649.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:微服务网关 Spring Cloud Gateway

下一篇:hello world 执行原理