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 ...