zoukankan      html  css  js  c++  java
  • 简单排序

    一、冒泡排序

          

          相邻的进行比较,大的向后移动,

    public class Sort01 {
        /**
         * 进行排序
         * @param a
         */
        public static void sort(int[] a){
    
            for(int i=a.length-1;i>0;i--){
                for(int j=0;j<i;j++){
                    if (greater(a[j],a[j+1])){
                        exch(a,j,j+1);
                    }
                }
            }
        }
    
        /**
         * 比较v和w谁大
         *  v.compareTo(w)>0,则v>w
         * @param v
         * @param w
         * @return
         */
        public static boolean greater(Comparable v,Comparable w){
            return v.compareTo(w)>0;
        }
    
        /**
         * 交换
         */
        public static void exch(int[] a,int i,int j){
            int temp;
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    
    }
    public class SortTest {
        public static void main(String[] args) {
            int[] arr ={4,5,6,3,2,1};
            Sort01.sort(arr);
            System.out.println(Arrays.toString(arr));
        }
    }
    
    

    二、选择排序

           

            选择排序是:第一次在数据中找到最小的放到放到第一位,第二在数据中找除过第一个数的最小数放到第二位......以此类推;

             找到最小的方法:假设第一个为最小,和其他的挨个比较;

    public class Sort01 {
        /**
         * 进行排序
         * @param a
         */
        public static void sort(Comparable[] a){
             for(int i =0;i<=a.length-2;i++){
                for (int j=i+1;j<a.length;j++){
    //比较最小索引和j索引处的值
    if(greater(a[i],a[j])){ exch(a,i,j); } } } } /** * 比较v和w谁大 * v.compareTo(w)>0,则v>w * @param v * @param w * @return */ public static boolean greater(Comparable v,Comparable w){ return v.compareTo(w)>0; } /** * 交换 */ public static void exch(Comparable[] a,int i,int j){ Comparable t; t=a[i]; a[i]=a[j]; a[j]=t; } }
    public class SortTest {
        public static void main(String[] args) {
            Integer[] arr ={4,5,6,3,2,1};
            Sort01.sort(arr);
            System.out.println(Arrays.toString(arr));
        }
    }
    
    
    
     

    三、插入排序

           原理:1.把所有的元素分为两组,已排序和未排序

                      2.找到未排序的组中的第一个元素,向已经排序的组中进行插入

                      3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,就把待插入元素放到此位置,其他元素后移

                         

     public static void sort(Comparable[] a){
            for(int i=1;i<a.length;i++){
                for (int j=i;j>0;j--){
                    if(greater(a[j-1],a[j])){
                        exch(a,j-1,j);
                    }else{
                        break;
                    }
                }
            }
    
        }
  • 相关阅读:
    Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
    旋转二维数组
    replace empty char with new string,unsafe method和native implementation的性能比较
    判断一字符串是否可以另一字符串重新排列而成
    移除重复字符的几个算法简单比较
    也来纠结一下字符串翻转
    判断重复字符存在:更有意义一点
    程序员常去网站汇总
    sublime
    针对程序集 'SqlServerTime' 的 ALTER ASSEMBLY 失败,因为程序集 'SqlServerTime' 未获授权(PERMISSION_SET = EXTERNAL_ACCESS)
  • 原文地址:https://www.cnblogs.com/cqyp/p/12547045.html
Copyright © 2011-2022 走看看