1、有序陣列二分查詢
首先設定判斷要找的資料為key,判斷其是否在 陣列的中間即a.length/2的位置,即key=a[a.length/2] 如果在直接返回。如果不在則迴圈獲取,重要的一點,中間元素的值為mid = start + (start + end)/2。 判斷如果key在mid位置則 返回,如果key>a[mid] 則start=mid +1;反之則為end = mid -1; 核心**如下:
//如果在有序陣列的中間直接返回
int mid=a.length/2;
if (key==a[mid])
int start=0;
int end=a.length-1;
while (start <= end) else
if(key > a[mid])else
}return -1;
//遞迴查詢
private
static
intbinsearch(int a, int start,int end,int key)else
if(start >= end)else
if(a[mid] > key )else
}
2、氣泡排序
氣泡排序是簡單排序裡面效率最小的一種排序方式,假如有n個資料,外層迴圈n-1次。每次相比較n-i次,重點在於:如果a[j]>a[j+1],則快取temp=a[j+1],交換a[j]和a[j+1],核心**如下:
//外層迴圈控制排序趟數(n-1)趟
for (int i = 0; i < a.length -1 ; i++)
}}
3、選擇排序
選擇排序 效率比氣泡排序的效率高一些,主要思想是當前的資料記錄為最小值min和接下來的資料做對比,如果接下來的資料比當前的小,則記錄此資料為最小值,接著向下比較,每一次迴圈找到乙個資料最小的值,交換。核心**如下
//外層迴圈控制排序趟數(n-1)趟
intin,out,min;
for (out = 0; out
< melement ; out++)
}long temp = a[out];
a[out] = a[min];
a[min] = temp;
}
4、插入排序
定義乙個臨時儲存的變數,將資料列表中第二個資料放入零時變數中,然後依次和它之前的資料比較,前一條資料如果大於等於temp的話移動,否則不移動。 定義乙個臨時變數為temp, 核心**如下:
//插入排序 --將第二個資料放入零時變數中,往取出資料的當前位置往前移動, 比較大小,放入相應的位置
intout,in;
for (out = 1; out
out++) //至此就移動結束
a[in]=temp;
}
資料結構 排序
小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...
資料結構 排序
郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...
資料結構 排序
1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...