数据结构-简单排序

来源:互联网 发布:淘宝的差评多久会生效 编辑:程序博客网 时间:2024/05/17 05:58

简单排序:冒泡排序(O(N^2))、选择排序(O(N^2))、插入排序(O(N^2),对于基本有序的数组(O(N)))。


package com.jikefriend.arraysort;import java.util.Random;/** * 数据排序:冒泡排序,选择排序,插入排序 */public class ArraySort {    private int[] a;    private int nElems;    public ArraySort(int max)    {        a = new int[max];        nElems = 0;    }    public void insert(int value)    {        a[nElems++] = value;    }    public void display()    {        for (int i = 0; i < nElems; i++) {            System.out.print(a[i] + " ");        }        System.out.println();    }    /**     * 冒泡排序     *     * 1、比较两个元素     * 2、如果左侧的元素大于右侧的元素,则交换两个元素     * 3、向右移动一个位置,重复步骤1和2,直至本轮最大的元素位于当前数组的最右侧     * 4、选定新的数组,将上轮的最右侧排除在外,重复以上步骤     */    public void bubbleSort()    {        for (int out = nElems - 1; out > 1; out--)        {            for (int in = 0; in < out; in++)            {                if (a[in] > a[out])                {                    int tmp = a[in];                    a[in] = a[out];                    a[out] = tmp;                }            }        }    }    /**     * 选择排序     *     * 1、比较两个元素     * 2、如果左侧的元素小于右侧的元素,则记录左侧元素的位置为最小元素的位置     * 3、向右移动一个位置,重复步骤1和2,直至找出本轮最小元素的位置,并将该位置的元素与最左侧的元素交换     * 4、选定新的数组,将上轮的最左侧元素排除在外,重复以上步骤     */    public void selectSort()    {        for (int out = 0; out < nElems - 1; out++)        {            int min = out;            for (int in = out + 1; in < nElems; in++) {                if (a[in] < a[min])                {                    min = in;                }            }            int tmp = a[out];            a[out] = a[min];            a[min] = tmp;        }    }    /**     * 插入排序     *     * 1、选定一个元素,其左侧为有序数组     * 2、将改选定元素依次与左侧元素比较,将比其大的右移     * 3、当没有比其大的元素时,将其放入左侧空出的位置,结束此次插入     * 4、将之前选中元素的后一个元素作为新的带插入元素,重复上述1,2,3步的操作,直至将最右侧的元素插入左侧有序数组     */    public void insertSort()    {        int in;        for (int out = 1; out < nElems; out++)        {            int tmp = a[out];            in = out;            while (in > 0 && a[in -1] >= tmp)            {                a[in] = a[in -1];                --in;            }            a[in] = tmp;        }    }    public static void main(String[] args) {        final Random random = new Random(47);        ArraySort arraySort = new ArraySort(20);        for (int i = 0; i < 20; i++) {            arraySort.insert(random.nextInt(40));        }        arraySort.display();//        arraySort.bubbleSort();//        arraySort.selectSort();        arraySort.insertSort();        arraySort.display();    }}


0 0