溫故而知新,可以為師矣
「深入理解」—選擇排序演算法
「深入理解」—交換排序演算法
「深入理解」—插入排序演算法
「深入理解」—歸併排序演算法
二分查詢演算法
不對之處請各位指出,感謝。
import org.junit.test;
/** * 總結排序演算法:
* 氣泡排序、快速排序
* 直接插入排序、折半插入排序、希爾排序
* 選擇排序、堆排序
* 歸併排序
* 二分查詢演算法(遞迴、迭代)
* @author ywq
* **/public class solution ;
// for (int i : num)
// system.out.println();
bubblesort(num);
// quicksort(num, 0, num.length-1);
// insertsort(num);
// shellsort(num);
// halfinsertsort(num);
// selectsort(num);
// heapsort(num);
// mergesort(num, 0, num.length-1);
system.out.println(halfsearch2(num,0,num.length-1,3));
for (int i : num) }
/*** 從後往前的氣泡排序
* @param num
*/public void bubblesort(int num)
int i = left;
int j = right;
int temp = num[i];
//此處開始進入遍歷迴圈
while (i < j)
num[i] = num[j];
while (i < j && num[i] <= temp)
num[j] = num[i];
num[i] = temp; // 此處不可遺漏,將基準值插入到指定位置
}quicksort(num, left, i - 1);
quicksort(num, i + 1, right);
} /**
* 直接插入排序演算法
* @param num
*/public void insertsort(int num)
num[j+1] = temp; // 將num[i]放在指定位置
} }/**
* 希爾排序,分組的直接插入排序
* 多加了一成迴圈,增量d的初始值為陣列長度的一半
* @param num
*/public void shellsort(int num)
num[j+d] = temp;
}} }
/*** 折半插入排序:
* left = 0;
* right = i-1; 目標是將第i個元素插入到前面的某個位置,所以right為i-1
* @param num
*/public void halfinsertsort(int num)else if(num[mid]<=temp)
}// 經過上邊的迴圈,知道num[i]應該插入到left位置
int j ;
for (j = i-1; j >= left; j--)
num[left] = temp; // 將num[i]放在指定位置
} }
/*** 選擇排序:外層迴圈控制著趟數,每趟的num[i]我們認為是最小值
* @param num
*/public void selectsort(int num)
}} }
/*** 堆排序:
* 1、構建大頂堆
* 2、交換堆頂和末尾元素
* 3、繼續構建大頂堆
* @param num
*/public void heapsort(int num)
// 取堆頂元素進行交換,重新構建大頂堆
for(int t = num.length-1;t>0;t--)
} /**
* 交換陣列中的兩個位置的元素
* @param num
* @param i
* @param t
*/private void swap(int num, int i, int t)
/*** 構建大頂堆的方法
* s 代表擁有左右孩子節點的節點,即本次要調整位置的節點
* length 代表當前堆的長度
* @param num
* @param s
* @param length
*/private void getmaxheap(int num, int s, int length)
num[s] = temp; // 將temp放在指定位置 }
/*** 歸併排序:
* 將兩個(或兩個以上)有序表合併成乙個新的有序表 即把待排序序列分為若干個子串行,
* 每個子串行是有序的。然後再把有序子串行合併為整體有序序列
* @param num
* @param left
* @param right
*/public void mergesort(int num,int left,int right)
return -1;
}}
排序演算法大總結
思路 從最左邊的元素開始,逐個遍歷,找到這一趟中的最小值,存到minindex裡面,最後這一趟結束,將它和這一趟開始遍歷的位置i上的元素swap,直到最後乙個位置上也就位。相當於選擇出每一趟最小的元素,然後把它放到這一趟開始的地方。基礎版 void selectionsort int arr,int...
排序演算法 九大排序演算法總結
參考部落格 排序演算法 直接插入排序 時間複雜度 空間複雜度 o 1 穩定性 穩定 參考部落格 排序演算法 希爾排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 選擇排序 時間複雜度 空間複雜度 o 1 穩定性 不穩定 參考部落格 排序演算法 堆排序 時間複雜度 空間複雜...
排序演算法和查詢演算法總結
1.氣泡排序 解釋 所謂氣泡排序,就是如同水裡的泡泡一樣,將合適的值一次次往上冒,直到所有資料全部處理完成。在資料中的解釋就是 從第乙個數開始,每次都將前乙個數與後乙個數作比較,如果前乙個數大於後乙個數,則將兩者交換位置 否則不交換 此時,後乙個數值已變化,然後再將後乙個數與後後乙個數作比較,重複操...