陣列演算法集合

2021-10-07 14:20:48 字數 2036 閱讀 3822

1.氣泡排序:平均時間複雜度(o(n^2))

①比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

②對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

③針對所有的元素重複以上的步驟,除了最後乙個。

④持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

package demo4;

public

class

buttbblesort

;int count=0;

//方法一:

for(

int i =arr.length-

1; i >

0; i--)}

}//方法二:

for(

int i =

0; i1; i++)}

} system.out.

println

("比較的次數:"

+count)

;for

(int i =

0; i }

2.選擇排序:第一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法。比氣泡排序的效率高。

package demo4;

public

class

selectsort

;int count=0;

int count1=0;

for(

int i =

0; i 1; i++)}

if(min !=i)

} system.out.

println

("比較次數:"

+count)

; system.out.

println

("交換次數:"

+count1)

;for

(int i =

0; i }

3.二分法(折半查詢)法:①乙個乙個挨著找,找到為止。②二分法查詢,效率比較高。

演算法要求:

1.必須採用順序儲存結構。

2.必須按關鍵字大小有序排列。

方法一:

package demo4;

public

class

arraysearch

;int index=

arraysearch

(arr,11)

; system.out.

println

(index==-1

?"該元素不存在"

:"該元素的下標是:"

+index);}

public

static

intarraysearch

(int

arr,

int ele)

}return-1

;}}

方法二:

package demo4;

public

class

arrayunit

;int index =

binarysearch

(arr,

666)

; system.out.

println

(index ==-1

?"該元素不存在!"

:"該元素的下標是:"

+ index);}

public

static

intbinarysearch

(int

arr,

int dest)

else

if(arr[mid]

< dest)

else

}return-1

;}}

演算法試題 陣列 集合

1.有乙個整數陣列,請求出兩兩之差絕對值最小的值。2.乙個整數數列,元素取值可能是1 n n是乙個較大的正整數 中的任意乙個數,相同數值不會重複出現。設計乙個演算法,找出數列中符合條件的數對的個數,滿足數對中兩數的和等於n 1。複雜度不能為o n2 3.給定乙個集合a 0,1,3,8 該集合中的元素...

集合與陣列

system.collections命名空間 c icollection d lists和ilist e 字典和idictionary f 雜湊表 g sortedlist h queue和stack 字典和idictionary idictionary擴充套件了icollection,但不表示可以...

陣列,字典,集合

1.nsstring 初始化方法 nsstring initwithformat d,a,b int a 1000 nsstring str1 nsstring alloc initwithformat zhangsan d a nsstring stringwithformat nsstring ...