zoukankan      html  css  js  c++  java
  • 算法小结-冒泡、选择排序、直接插入排序

    1.冒泡排序法:比较相邻的两个元素,如果前边比后边大,就对调两元素,一趟下来,最大的数放在最右边,就像泡泡上升一样。

    代码:

    /*
         * 冒泡
         */
        static void bubble_sort(int[] array)
        {
            for (int i = 0; i < array.length; i++)
            {
                for (int j = i; j < array.length; j++)
                {
                    if (array[i] > array[j])
                    {
                        int temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }

    2.选择排序:每一趟选择最小的一个元素,放在已排好的元素的最右边,直至全部拍完。

    代码:

     /*
         * 选择排序
         * 每一趟从待排序的数据元素中选出最小的,放在已排好的数列的最前。
         */
        public static void xuanzepaixu(){
            int[] array = new int[]{63,24,15,26,3,8,33};
            String end ="";
            int index;
            for(int i=1;i<array.length;i++){///6次
                index = 0;
                for(int j=1;j<=array.length-i;j++){
                    if(array[j]>array[index]){
                        index=j; //记下最大的位置
                    }
                }
            end = end+" "+array[index];
            int temp = array[array.length-i];
             array[array.length-i] = array[index]; 
             array[index] = temp;    
            }
            System.out.println(end);
            for(int i=0;i<array.length;i++)
            System.out.println(array[i]);
        }

    结果:

    63 33 26 24 15 8
    3
    8
    15
    24
    26
    33
    63

    3.直接插入排序:数组分为已排序好的和未排序的两部分,每一趟选择未排序的数x和已经排好的数组进行比较,找到x应该放的位置p,把排序好的数组p之后的元素都向后移动,放入x。直至拍完。

    代码:

    /*
         * 直接插入
         * 将n个有序数存放到数组a中,要插入的数为x,首先确定x插在数组中的位置p,数组中p之后的元素都向后移一个位置
         */
        public static void zhijiecharu(){
            int[] array = new int[]{63,24,15,26,3,8,33};
            int temp,j;
            for(int i=1;i<array.length;i++){
                temp = array[i];
                for(j=i-1;j>=0&&array[j]>temp;j--){  //循环结束时,1.j<0;2. array[j]<=temp;此时要放到j的后边
                 array[j+1]=array[j];   //有序数组里的数向后移动                
                }
                array[j+1] = temp; //j是要插入位置的前边的数
            }
            for(int i=0;i<array.length;i++){
                System.out.println(array[i]);
            }    
        }
        

    结果:3 8 15 24 26 33 63

  • 相关阅读:
    B/S---控件属性
    Windows Form -----内容(11)
    C#--Web控件简介
    C#控件基本1
    C#增删改小总结
    C#播放器控件的常用方法介绍
    C#封装---小练
    链接SQL、事务---小总结
    事务-----2
    事务----1
  • 原文地址:https://www.cnblogs.com/jycboy/p/5256034.html
Copyright © 2011-2022 走看看