zoukankan      html  css  js  c++  java
  • 2.1 选择排序和冒泡排序

    一、选择排序

       选择一个元素,依次与后面的元素相比较。

     

       如上图所示,arr[0]分别和数组的arr[0+1]arr[0+2],直至最后一个元素做比较,完成第一个循环;arr[1]分别和数组的第arr[1+1]arr[1+2],直至最后一个元素做比较....

       写程序的思路,可以先写第一层循环,再从第一层循环中提取出总结性的部分,放在上一层循环中。

       上一层循环使用for(x=0;x<arr.length-1;x++),用于确定是哪个元素在和后面的元素比较;

       里面的循环使用for(int i=x+1;i<arr.length;i++),用于确定是哪个元素是后面被比较的元素的起点;

       循环内部使用arr[x]arr[i]作比较。

             内存循环是用来控制该轮循环中被比较的元素的。

     

    代码:

    public static void sort(int[] arr)
    {
         for(int x=0;x<arr.length-1;x++)
        {
                 for(int i = 1+x;i<arr.length;i++)
                {
                       if(arr[x]>arr[i])
                      {
                           int temp = arr[x];
                           arr[x]=arr[i];
                           arr[i]=temp;
                       }
               }
         }
    }

    二、冒泡排序

       如上图所示,冒泡排序就是将相邻的2个元素进行比较。如果是从小到大排序,那么第一轮比较结束后,最大的元素被冒泡到最后;第二轮比较结束后,第二大的元素被冒泡到倒数第二个位置;如果是从大到小排序,那么最小的元素在第一轮比较结束后会被放到最后,以此类推。注意,不管是正序,还是倒叙,第一轮都是将最大/最小值放到最后的

       方法同上选择排序,第一轮排序,比较次数为arr.length-1次,第二轮为arr.length-2,以此类推。因此外层循环为for(int x =0;x<arr.length-1;x++)

       内层循环为for(int i=0;i<arr.length-1-x;i++) ,循环内部交换元素即可。

             内存循环是用于控制每一轮的比较次数的。

     代码:

    static void sort(int[] arr)
    {
             for(int x=0;x<arr.length-1;x++)
             { 
                    for(int i=0;i<arr.length-1-x;i++)
                    {
                             if(arr[i]>arr[i+1])
                             {
                                    int temp = arr[i];
                                    arr[i]=arr[i+1];
                                    arr[i+1]=temp;
                             }
                   }
            }
    }

  • 相关阅读:
    poj2186强连通分量
    poj1459SAP最大流模板题
    poj2391Floyd+二分+最大流
    curl上传下载入门
    Mysql存储过程
    小球旋转
    钟表单摆
    java小记 摘抄
    servlet的一些收集总结
    Javascript基础小结
  • 原文地址:https://www.cnblogs.com/May-study/p/7562634.html
Copyright © 2011-2022 走看看