现在的位置: 首页 > 综合 > 正文

Java 常用排序算法

2014年01月29日 ⁄ 综合 ⁄ 共 1117字 ⁄ 字号 评论关闭
package arithmetic;

/**
 * Created by IntelliJ IDEA.
 * User: haoshihai
 * Date: 13-8-8
 * Time: 下午12:12
 * To change this template use File | Settings | File Templates.
 */
//java 算法
public class Arithmetic {
    int data[] = {9, 2, 7, 19, 100, 97, 63, 208, 19, 78};

    //打印
    public void print() {
        for (int i = 0; i < data.length; i++) {
            System.out.println(data[i]);
        }
    }
    //排序-直接插入
    /**
     * 原理 每次从待排序的元素取出一个,插入到已排序元素中适当位置
     */
    public void directInsert() {
        for (int i = 1; i < data.length; i++) {
            int j = i;
            while (j > 0 && data[j] < data[j - 1]) {
                int temp = 0;
                temp = data[j];
                data[j] = data[j - 1];
                data[j - 1] = temp;
                j--;
            }
        }
    }
    //排序-冒泡
    /**
     * 原理 每次循环从剩余元素找出最值(最大或最小值)
     */
    public void maxPopup() {
        for (int i = 0; i < data.length - 1; i++) {
            int temp = 0;
            for (int j = i; j < data.length - 1; j++) {
                if (data[j] > data[j + 1]) {//升序 数值小向前移
                    temp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = temp;
                }
            }
        }
    }
    //排序-选择
    /**
     * 原理 与直接插入排序正好相反,选择排序是从待排序的数中选出最小的放在已经排好的后面。
     */
    public void selectSort() {
        for (int i = 0; i < data.length - 1; i++) {
            int k = i;
            for (int j = i + 1; j < data.length; j++) {
                if (data[j] < data[k]) {
                    k = j;
                }
            }
            if (k != i) {
                int temp = data[k];
                data[k] = data[i];
                data[i] = temp;
            }
        }
    }

    public static void main(String args[]) {
        Arithmetic arithmetic = new Arithmetic();
        arithmetic.print();
        arithmetic.selectSort();
        System.out.println("-------排序后--------------");
        arithmetic.print();
    }
}

抱歉!评论已关闭.