iteye_3828 2008-11-05 09:32
浏览 276
已采纳

请问用java有几种实现数据排序的方法?(请附实现代码)

java的排序一共有多少钟?实现的详细代码是什么?

  • 写回答

5条回答 默认 最新

  • chenli348105874 2008-11-05 09:54
    关注

    排序算法是数据结构的东西 和语言是没关系的
    冒泡:[code="java"]public class BubbleSort {
    public static void bubbleSort(int[] array) {
    int length = array.length - 1;
    for (int out = length; out > 0; out--) {
    for (int in = 0; in < out; in++) {
    if (array[in] > array[in + 1]) {
    int s = array[in];
    array[in] = array[in + 1];
    array[in + 1] = s;
    }
    }
    }
    }

    }[/code]
    插入:[code="java"]public class InsertSort {
    public static void sort(int[]array){
    int length=array.length;
    for(int out=1;out int temp=array[out];
    int in=out;
    while(in>0&&array[in-1]>temp){
    array[in]=array[in-1];
    --in;
    }
    array[in]=temp;
    }
    }
    }[/code]
    选择:[code="java"]public class SelectSort {
    public static void sort(int[]array){
    for(int out=0;out<array.length-1;out++){
    int min=out;
    for(int in=out+1;in<array.length;in++){
    if(array[in]<array[min]){
    min=in;
    }
    }
    int t =array[out];
    array[out]=array[min];
    array[min]=t;
    }
    }
    }
    [/code]
    希尔:[code="java"]public class SheelSort {
    private int[] hs;

    private int[] a;
    
    public void sort(){
        for(int h:hs){
            for(int i=h;i<a.length;i++){
                int in=i;
                int inValue=a[i];
                while(in-h>-1&&a[in-h]>inValue){
                    a[in]=a[in-h];
                    in=in-h;
                }
                a[in]=inValue;
            }
        }
    }
    
    
    public int[] getHs() {
        return hs;
    }
    
    public void setHs(int[] hs) {
        this.hs = hs;
    }
    
    public int[] getA() {
        return a;
    }
    
    public void setA(int[] a) {
        this.a = a;
    }
    

    }[/code]

    快速:[code="java"]public class SpeedSort {
    private int[] a;

    public void sort() {
        int begin = 0;
        int end = a.length - 1;
        quickSort(begin, end);
        for (int i : a) {
            System.out.print(i + " ");
        }
    }
    
    private void quickSort(int begin, int end) {
        if (begin >= end) {
    
        } else {
            int pivot = a[end];
            int result = getPivot(begin, end, pivot);
            quickSort(begin, result - 1);
            quickSort(result + 1, end);
        }
    
    }
    
    private int getPivot(int begin, int end, int pivot) {
        begin = begin - 1;
        int o = end;
        while (true) {
            while (a[++begin] < pivot) {
    
            }
            while (end > 0 && a[--end] > pivot) {
    
            }
            if (begin >= end) {
                break;
            } else {
                swap(begin, end);
            }
        }
        swap(begin, o);
        return begin;
    }
    
    private void swap(int begin, int end) {
        int t = a[begin];
        a[begin] = a[end];
        a[end] = t;
    }
    
    public int[] getA() {
        return a;
    }
    
    public void setA(int[] a) {
        this.a = a;
    }[/code]
    

    自己写的 凑合看吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?