`

Java排序算法

    博客分类:
  • Java
阅读更多

1.1.冒泡排序法

   /**
     * 对Integer数组进行升序排
     * 
     * @param dataArr
     */
    public static int[] sort(int[] dataArr) {
        int iTemp;
        for (int i = 0; i < dataArr.length; i++) {
            for (int j = dataArr.length - 1; j > i; j--) {
                // ‘>’升序,‘<’降序
                if (dataArr[i] > dataArr[j]) {
                    iTemp = dataArr[i];
                    dataArr[i] = dataArr[j];
                    dataArr[j] = iTemp;
                }
            }
        }

        return dataArr;
    }

    /**
     * 打印九九乘法口诀表
     */
    public static void nineNineMulitTable() {
        for (int i = 1, j = 1; j <= 9; i++) {
            System.out.print(i + "*" + j + "=" + i * j + " ");
            if (i == j) {
                i = 0;
                j++;
                System.out.println();
            }
        }
    }

 

1.2.插入排序法

    /**
     * 
     * @param arr
     * @return
     */
    // 插入排序就是每一步将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
    public static int[] insertSort(int[] arr) {
        int i, j;
        int insertData;// 要插入的数据
        int[] dataArr = arr;

        // 从数组的第二个元素开始循环将数组中的元素插入
        for (i = 1; i < dataArr.length; i++) {
            // 设置数组中的第2个元素为第一次循环要播讲的数据
            insertData = dataArr[i];
            j = i - 1;
            while (j >= 0 && insertData < dataArr[j]) {
                // 如果要播讲的元素小于第j个元素,就将第j个元素向后移动
                dataArr[j + 1] = dataArr[j];
                j--;
            }
            // 直到要插入的元素不小于第j个元素,将insertData插入到数组中
            dataArr[j + 1] = insertData;
        }
        
        // 打印排序后的数组
        System.out.println(Arrays.toString(dataArr));
        
        return dataArr;
    }

    /**
     * 插入排序(WHILE循环实现)
     * 
     * @param src待排序数组
     */
    static void doInsertSort1(int[] src)
    {
       int len=src.length;
       for(int i=1;i<len;i++)
       {  
           int temp=src[i];
           int j=i;
          
           while(src[j-1]>temp)
           {
              src[j]=src[j-1];
              j--;
              if(j<=0)
                  break;
           }
           src[j]=temp;
       }
       System.out.println(Arrays.toString(src));
    }

    /**
     * 插入排序(FOR循环实现)
     * 
     * @param src待排序数组
     */
    static void doInsertSort2(int[] src)
    {
       int len=src.length;
       for(int i=1;i<len;i++)
       {
           int j;
           int temp=src[i];
           for(j=i;j>0;j--)
           {
              if(src[j-1]>temp)
              {
                  src[j]=src[j-1];
              }else//如果当前的数,不小前面的数,那就说明不小于前面所有的数,
                   //因为前面已经是排好了序的,所以直接通出当前一轮的比较
                  break;
           }
           src[j]=temp;
       }
       System.err.println(Arrays.toString(src));
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics