第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法獲得排序的數(shù)組

無法獲得排序的數(shù)組

縹緲止盈 2023-05-24 16:32:45
無法識別我的錯誤,檢查了很多請仔細檢查它不會產(chǎn)生正確的輸出,代碼是通過 java 快速排序的實現(xiàn)。此代碼產(chǎn)生與輸入相同的輸出,因為我是 java 和算法的新手,我無法弄清楚。class Codechef{    public static void main (String[] args) throws java.lang.Exception    {        int a[]=new int[5];        Scanner s=new Scanner(System.in);        for(int i=0;i<5;i++)            a[i]=s.nextInt();        quick(a,0,4);        for(int i=0;i<5;i++)            System.out.print(a[i]+" ");    }    public static void quick(int a[],int s,int l)    {        if(s<l)        {            System.out.println("in quick");            int pi=part(a,s,l);            quick(a,s,pi-1);            quick(a,pi+1,l);        }    }    public static int part(int a[],int s,int l)    {        System.out.println("in part");        int pivot=a[l];        int pin=s;        for(int i=s;i<l;i++)        {            if(a[i]<=pivot)            {                swap(a[i],a[pin]);                pin++;            }        }        swap(a[pin],a[l]);        System.out.println(pin);        return pin;         }    public static void swap(int a,int b)    {        System.out.println("in swap");        int t;        t=a;        a=b;        b=t;    }}
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

您的交換功能不起作用,這就是為什么quick您的陣列保持不變的原因。

這正好解決了您的問題:Java: Why does does this swap method not work??-- 這些是基本概念,理解它們是值得的。

無論如何,既然你正在處理一個數(shù)組,你可以這樣去做:

/** Swap array[i] and array[j] */

public static void swap(int[] array, int i, int j)

{

? ? int t = array[i];

? ? array[i] = array[j];

? ? array[j] = t;

}

注意:我沒有深入研究你的排序邏輯——一旦這個問題得到解決,你也許就能弄明白。


查看完整回答
反對 回復 2023-05-24
?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

調(diào)用 swap 時實際上并沒有交換數(shù)組元素。該方法所做的只是交換參數(shù)。

您可以將數(shù)組與索引一起傳遞到交換方法中,或者更實際地說,只需將交換代碼復制到您的部分方法中


查看完整回答
反對 回復 2023-05-24
?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

我不知道您是否正在學習 QuickSort,但是如果您想要一種快速對數(shù)字列表進行排序的方法,我建議您使用 ArrayList,它基本上是這樣聲明的:


ArrayList<Integer> yourArrayList = new ArrayList<Integer>();


在菱形運算符 (<>) 中插入數(shù)據(jù)類型,在本例中為Integer,但您也可以插入Double以獲得小數(shù)結果。


聲明后,您必須添加您的號碼:


yourArrayList.add(1)

 yourArrayList.add(3);

ETC...


完成后使用Collections.sort(yourArrayList);


我希望我很清楚,這是使用它的代碼:


   ArrayList<Integer> yourArrayList = new ArrayList<Integer>();

 

   yourArrayList.add(10);

   yourArrayList.add(3);

   yourArrayList.add(7);

   yourArrayList.add(-3);

   

   Collections.sort(yourArrayList);

   System.out.println(yourArrayList);


查看完整回答
反對 回復 2023-05-24
  • 3 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號