資料結構 排序

2021-08-27 20:42:45 字數 1475 閱讀 5165

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