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条)

报告相同问题?

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制