常用排序演算法備忘錄

2021-09-27 00:16:19 字數 2412 閱讀 3240

快速排序

public class quicksort ;//3, 5, 1, 4, 6, 2, 8

stringbuilder sb = new stringbuilder();

new quicksort().quicksort(array, 0, array.length - 1);

for (integer num : array)

system.out.println(sb.tostring().substring(0, sb.tostring().length() - 1));

}private void quicksort(int array, int left, int right)

int mark = getmark(array, left, right);

quicksort(array, left, mark - 1);

quicksort(array, mark + 1, right);

}private int getmark(int array, int left, int right)

}temp = array[mark];

array[mark] = basic;

array[left] = temp;

return mark;

}}

歸併排序

public class mergesort ;//3, 5, 1, 4, 6, 2, 8

stringbuilder sb = new stringbuilder();

mergesort(array);

for (integer num : array)

system.out.println(sb.tostring().substring(0, sb.tostring().length() - 1));

}public static void mergesort(int arr)

public static void sort(int arr, int l, int r)

int mid = (l + r) / 2;

sort(arr, l, mid);

sort(arr, mid + 1, r);

merge(arr, l, mid, r);

}public static void merge(int arr, int l, int mid, int r)

// 上面的迴圈退出後,把剩餘的元素依次填入到temp中

// 以下兩個while只有乙個會執行

while(p1 <= mid)

while(p2 <= r)

// 把最終的排序的結果複製給原陣列

for(i = 0; i < temp.length; i++)

}}

堆排序

/**

* 堆排序思想

* 三個方法,heapify(),buildheap(),heapsort()

* 1.heapify():先對(比如根節點進行)heapify操作:

* 找到兩個子節點下標,把根節點和子節點進行比較,找到值最大的那個下標,如果這個下標不等於根節點,

* 則交換值。進行下輪heapify(因為替換後的節點可能也不符合最大堆定義)

* 2.buildheap()將乙個無序陣列構建為乙個最大堆,根據n,找到最後的父節點,然後各個父節點依次進行heapify操作

* 3.heapsort(),先將無序資料呼叫buildheap(),然後將根節點值與陣列最後乙個值進行交換,然後對0到n-2進行heapify()

*/public class heapsort ;

int array = ;

int n = array.length;

heapsort.heapsort(array, n);

for (int num : array)

}private void heapsort(int array, int n)

}private void buildheap(int array, int n)

}private void heapify(int array, int n, int root)

int left = root * 2 + 1;

int right = root * 2 + 2;

int max = root;

if (left < n && array[left] > array[max])

if (right < n && array[right] > array[max])

if (max != root)

}private void swap(int array, int root, int max)

}

常用android命令備忘錄

1.常用基本命令adb devices 檢視當前掛載手機裝置的資訊 adb root root userdebug版本的手機。adb remount 將 system 目錄改為可寫入的模式,預設情況下 system 部分是唯讀模式的。這個命令只適用於已被 root 的裝置,即呼叫過 adb root...

python常用庫備忘錄

阿里雲映象安裝 pip install 庫名稱 i requestsweb爬蟲工具,指定ua,cookie 模擬訪問網頁,抓取資料,使用教程 lxml將字串解析成xml和html,一般配合requests,用來解析網頁,解析後可以用xpath來定位元素 使用教程 pyautoguiwindows自動...

CSS HTML 常用屬性備忘錄

萬用字元選擇符 標籤選擇符 p id選擇符 id 類選擇符 class 包含選擇符 p a p中的a標籤 分組選擇符 p,div p標籤和div標籤 display 規定元素框型別 block塊級元素,none元素不顯示,inine內聯元素即行內元素,inline black行內塊元素。visibi...