經典陣列排序

2021-09-28 22:50:46 字數 4551 閱讀 2502

元素兩兩筆記,把大的往後挪,經過一輪比較後,最大的元素會出現在最後面。

如此往復,就可以把陣列中的元素拍後

int

arr =

;// 13 24 57 69 80

//對陣列中的元素,進行乙個從小到大的排序

//氣泡排序:元素兩兩筆記,把大的往後挪,經過一輪比較後,最大的元素會出現在最後面。

//如此往復,就可以把陣列中的元素拍後

//快速抽取一段**到方法中 ctrl+alt+m

// tuidao(arr);

for(

int j =

0; j < arr.length -

1; j++)}

} system.out.

println

(arrays.

tostring

(arr));

}

從第乙個元素開始,挨著跟後面的每乙個元素進行比較,小的往前放,經過一輪比較後,最小的元素會放到最前面如此往復,陣列元素從小到大就排好了

int

arr =

;//tuidao(arr);

for(

int index =

0; index 1; index++)}

} system.out.

println

(arrays.

tostring

(arr));

}

每次把後面的乙個元素,插入到前面的乙個有序序列中,使之保持仍然有序

int

arr =

;//[20, 50,0]

//**實現

//外層迴圈定義輪次

for(

int i =

1; i < arr.length; i++)}

system.out.

println

(arrays.

tostring

(arr));

}

他是對直接插入排序的優化

int

arr =

;for

(int gap = arr.length /

2;gap>

0;gap/=2)

}}system.out.

println

(arrays.

tostring

(arr)

);

//獲取 把陣列分為左右兩區的這個基準數的索引

/* 1.將基準數挖出形成第乙個坑。

2.由後向前找比他小的數,找到後挖出此數填到前乙個坑中。

3.由前向後找比他大或等於的數,找到後也挖出此數填到前乙個坑中。

4.再重複執行2,3兩步驟。*/

public

static

void

quicksort

(int

arr,

int startindex,

int endindex)

}//挖坑填數 // 0 9

private

static

intgetindex

(int

arr,

int startindex,

int endindex)

//填坑

if(i < j)

//3.由前向後找比他大或等於的數,找到後也挖出此數填到前乙個坑中。

while

(i < j && arr[i]

< x)

//填坑

if(i < j)

} arr[i]

= x;

//把基準數新增最後乙個坑位

//arr[j]=x;

return i;

}

為了快速找到,陣列中乙個元素所對應的索引,前提是該陣列中的元素必須有序,才能用二分查詢二分查詢的原理:每次拿這個元素跟中間元素去比較,這樣查詢的次數就會減少一半

基本查詢:從頭開始挨個找,找到該元素第一次出現的索引

public

static

void

main

(string[

] args)

;//int index=findindex(arr,58);

// system.out.println("該元素的索引是:"+index);

int index =

findindex2

(arr,

100)

; system.out.

println

("該元素的索引是:"

+ index);}

//二分查詢

private

static

intfindindex2

(int

arr,

int ele)

else

if(ele > arr[centerindex]

)else

if(ele < arr[centerindex]

)//再重新計算中間索引

centerindex =

(minindex + maxindex)/2

;}return-1

;}//根據元素找索引

private

static

intfindindex

(int

arr,

int ele)

}return-1

;// 找不到,喜歡返回 -1 代表沒有找到

}

//這個類包含用於運算元組(如排序和搜尋)的各種方法。

int[

] arr=

;//二分查詢:前提是元素有序

// int index = arrays.binarysearch(arr, 300);

// system.out.println(index);

//排序陣列 公升序排列

arrays.

sort

(arr)

; string s = arrays.

tostring

(arr)

; system.out.

println

(s);

//對比兩個陣列中的元素是否一模一樣

int[

] arr2 =

;int

arr3 =

;boolean equals = arrays.

equals

(arr2, arr3)

; system.out.

println

(equals);*

**arrays.

fill()

;***

int[

] arr=

;// arrays.fill(arr,0,2,100);

// system.out.println(arrays.tostring(arr));

// static int copyof ( int original, int newlength)

// 複製指定的陣列,截斷或填充零(如果必要)所以副本具有指定的長度。

int[

] ints = arrays.

copyof

(arr,3)

; system.out.

println

(arrays.

tostring

(ints));

// copyofrange( long original, int from, int to)

//將指定的陣列指定的範圍複製到乙個新的陣列中。

int[

] ints1 = arrays.

copyofrange

(arr,

3, arr.length)

; system.out.

println

(arrays.

tostring

(ints1)

);

public static void fill ( int a,int toindex,int val)

將指定的int值 為指定陣列的每個元素物件的指定範圍。範圍是從指數 fromindex填充,包容延伸,指數 toindex,獨家。(如果 fromindex==toindex,範圍是滿是空的。)

引數a - 陣列填充fromindex - 第乙個元素的索引(含)充滿指定值toindex - 最後乙個元素的索引(獨家)充滿指定值val - 被儲存在陣列的所有元素的值異常

如果 fromindex >toindex illegalargumentexception

arrayindexoutofbound***ception - 如果 fromindex< 0 或 toindex >a.length*/

JS陣列經典氣泡排序

將8,4,3,1,4,6,等數字按照從小到大的順序依次輸出 var arr new array arr.push 8 arr.push 4 arr.push 3 arr.push 1 arr.push 5 arr.push 6 vartemp for var i 0 i for var x in a...

經典陣列排序方法 快速排序法

一 截圖 二 快速排序詳解 快速排序法 quicksort 是一種非常快的對比排序方法。它也divide and conquer思想的實現之一。自從其產生以來,快速排序理論得到了極大的改進,然而在實際中卻十分難以程式設計出正確健壯的 本文將對快速排序演算法的基本理論和程式設計實踐方面做作乙個全面的講...

陣列經典排序演算法(二)選擇排序

如下 選擇排序 找最小值 private static void fun2 for int i 0 i arr.length 1 i int t arr i arr i arr minindex arr minindex t 輸出陣列 for int i arr 找最小值下標 i輪 下標範圍 i到l...