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;
                    }
                }
            }
    
        }
  • 相关阅读:
    Android 在一个程序中启动另一个程序
    Android SDK Manager国内无法更新的解决方案
    Android studio 安装中遇到一些问题的解决办法,分享一下
    apache服务器伪静态配置说明
    POJ3253 Fence Repair【贪心】
    洛谷P1090 合并果子【贪心】
    POJ3069 Saruman's Army【贪心】
    洛谷P1012 拼数【字符串+排序】
    POJ3617 Best Cow Line【贪心】
    洛谷P1583 魔法照片【模拟+排序】
  • 原文地址:https://www.cnblogs.com/cqyp/p/12547045.html
Copyright © 2011-2022 走看看