算法第4版-算法2.1 選擇排序一些奇怪的問題

選擇排序本來是一個比較簡單的排序 今天依照書的方法缺出現(xiàn)奇怪的問題,因?yàn)楹罄m(xù)的排序算法都是基本這套模板來寫,所以必須解決


排序胡亂了,開始我以為是自己打漏或者打錯了代碼但是看代碼邏輯沒有問題,對照書本也沒有打漏.


后來檢查的時候發(fā)現(xiàn)問題所在了


在元素比較的時候我手多添加了一個注釋 @SuppressWarnings("unchecked"),導(dǎo)致排序錯誤百度了 @SuppressWarnings("unchecked")的作用如下:

該批注的作用是給編譯器一條指令,告訴它對被批注的代碼元素內(nèi)部的某些警告保持靜默。

@SuppressWarnings 批注允許您選擇性地取消特定代碼段(即,類或方法)中的警告。其中的想法是當(dāng)您看到警告時,您將調(diào)查它,如果您確定它不是問題,

您就可以添加一個 @SuppressWarnings 批注,以使您不會再看到警告。雖然它聽起來似乎會屏蔽潛在的錯誤,但實(shí)際上它將提高代碼安全性,因?yàn)樗鼘⒎乐?/p>

您對警告無動于衷 — 您看到的每一個警告都將值得注意。

@SuppressWarnings 解釋的傳送門:https://blog.csdn.net/hunhun1122/article/details/72356228



附上代碼:

<pre>

//選擇排序

public class Example_Selection {

//算法

public static void sort(Comparable[] a) {

int N=a.length;

for (int i=0;i<N;i++) {

int min =i;

for(int j =i+1;j<N;j++) {

if(less(a[j], a[min]))

min =j;

}

exch(a,i,min);

}

}

//元素比較

private static boolean less(Comparable v,Comparable w) {

return v.compareTo(w)<0;

}

//元素交換位置

private static void exch(Comparable[] a,int i,int j) {

Comparable t=a[i];

a[i]=a[j];

a[j]=t;

}

//打印數(shù)組

private static void show(Comparable[] a) {

for(int i=0;i<a.length;i++)

StdOut.print(a[i]+" ");

StdOut.println();

}

//測試數(shù)組元素是否有序

public static boolean isSorted(Comparable[] a) {

for (int i=1;i<a.length;i++) {

if(less(a[i],a[i-1]))

return false;}

return true;

}

public static void main(String[] args) {

//從標(biāo)準(zhǔn)輸入讀取字符串,將它們排序并輸出

Scanner sca=new Scanner(System.in);

String s=sca.next();

String[] a= s.split(",");

Integer[] num = new Integer[a.length];

for (int i = 0; i < a.length; i++) {

? ? ? ? ? ? num[i] = Integer.parseInt(a[i]);

? ? ? ? }

sort(num);

assert isSorted(num);

show(num);

}

}

</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容