• 排序算法Java代码实现(一)—— 选择排序


    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦!

    本片分为两部分代码:

    • 常用方法封装

              排序算法里需要频繁使用 交换数组中两数位置 的操作,另外,为了方便我打印数组查看结果,我封装一个 ArrayBase.java基类,用来实现swap方法和printArray方法;

    • 选择排序算法

    (一)ArrayBase.java

    /**
     * 
     */
    package com.cherish.SortingAlgorithm;
    
    /**
     * @author acer
     *
     */
    public class ArrayBase {
    
        /**
         * 
         */
        public ArrayBase() {
            // TODO 自动生成的构造函数存根
        }
    
        //数组中两数交换位置
            public static void swap(int[] array,int i,int j)
            {
                int t = array[i];
                array[i] = array[j];
                array[j] = t;
            }
            
            //打印数组
            public static void printArray(int[] array)
            {
                System.out.print("数组打印为:	");
                for(int i = 0; i < array.length;i++)
                {
                    System.out.print(array[i] + "	");            
                }
                System.out.println();
            }
    }

    (二)选择排序算法(代码继承ArrayBase基类,swap和printArray方法直接用)

    排序思想:

    从数组中选择最小元素,将它与数组的第一个元素交换位置。
    再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。
    不断进行这样的操作,直到将整个数组排序。
    /**
     * 
     */
    package com.cherish.SortingAlgorithm;
    
    /**
     * @author acer
     *
     */
    public class chapter_1_选择排序 extends ArrayBase {
    
        /**
         * 
         */
        public chapter_1_选择排序() {
            // TODO 自动生成的构造函数存根
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            int[] array = new int[] {3,4,7,9,2,5,1,8};
            printArray(array);
            SelectSorting(array);
            printArray(array);
        }
        
        /*
         * 从数组中选择最小元素,将它与数组的第一个元素交换位置。
         * 再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。
         * 不断进行这样的操作,直到将整个数组排序。
         * */
        
        public static void SelectSorting(int[] array)
        {
            if(array == null) {
                return;
            }
            int length = array.length;
            for(int i = 0;i<length-1;i++)
            {
                int min = i;//令第1个数为最小的数
                for(int j = i + 1;j < length ; j++)
                {
                    //排序,找出数组剩下的数中最小的数
                    if(array[min] > array[j])
                    {
                        min = j;
                    }
                }
                swap(array, i, min);
            }
        }
    }

    参考文献:https://www.cnblogs.com/snowcan/tag/排序算法/

  • 相关阅读:
    go笔记
    脚本
    php-log
    idea maven scala
    Corporative Network
    uva1160
    比map更强大的multimap
    Message Decowding
    kmp 的next 数组求法
    Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/CherishTheYouth/p/CherishTheYouth_2019_0811.html
Copyright © 2020-2023  润新知