@ -19,7 +19,6 @@ func BinaryQuery(list []int, target int) int {
// 前提必须进行排序
sort.Ints(list)
fmt.Println(list)
for low <= high {
mid := (low + high) / 2
@ -16,28 +16,6 @@
* **代码**
```java
public static void selectSort(int[] a) {
if (a == null || a.length <= 0) {
return;
}
for (int i = 0; i < a.length; i++) {
int temp = a[i];
int flag = i; // 将当前下标定义为最小值下标
for (int j = i + 1; j < a.length; j++) {
if (a[j] < temp) {// a[j] < temp 从小到大排序;a[j] > temp 从大到小排序
temp = a[j];
flag = j; // 如果有小于当前最小值的关键字将此关键字的下标赋值给flag
if (flag != i) {
a[flag] = a[i];
a[i] = temp;
```
```go
/**
Select 实现选择排序 O(n * n)
@ -23,11 +23,7 @@ func Insert(s []int) {
for i := 1; i < n; i++ {
for j := i; j > 0 && s[j] < s[j-1]; j-- {
// 选择第j张比较第j - 1张小,则循环交换较大的值
swap2(s, j, j-1)
s[j], s[j-1] = s[j-1], s[j]
func swap2(slice []int, i int, j int) {
slice[i], slice[j] = slice[j], slice[i]
@ -13,32 +13,23 @@
* 重复步骤2~5。
Insert 实现插入排序 O(n * n)
a : 被排序数组
返回:排序完毕数组
*/
func Insert(s []int) []int {
func Insert(s []int) {
n := len(s)
if n < 2 {
return s
return
for j := i; j > 0 && s[j] < s[j - 1]; j-- {
swap(s, j, j - 1)
func swap(slice []int, i int, j int) {
@ -19,10 +19,6 @@
Quick 实现快速排序 O(n * log(n))
@ -36,10 +36,6 @@
@ -20,10 +20,6 @@
* 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。
MergeSort 实现归并排序(前提列表有序)
@ -28,11 +28,7 @@ func Shell(s []int, get int) {
for i := get; i < n; i++ {
for j := i; j > 0 && s[j] < s[j-get]; j = j - get {
// 选择第j张比较第j - get张小,则循环交换较大的值
swap1(s, j, j-get)
s[j], s[j-get] = s[j-get], s[j]
func swap1(slice []int, i int, j int) {
@ -16,17 +16,12 @@
...
for d := len(a); d >= 1; d = d/2 {
func main(){
Shell(a, d)
@ -42,13 +37,9 @@ func Shell(s []int, get int) {
for j := i; j > 0 && s[j] < s[j - get]; j = j - get {
swap(s, j, j - get)
s[j], s[j - get] = s[j - get], s[j]
@ -16,10 +16,6 @@
@ -27,12 +27,15 @@
* 直接插入排序
* 扫描位置(指插入的位置)
* 希尔排序
*
* (优化)插入排序(缩小增量排序)
* 简单选择排序
* 扫描一遍(获取最小数)
* 对调位置
* 堆排序
* 建堆
* 交换值并向下调整
* 归并排序
* 将两个数组排有序
* 将两个数组归并到一起
* 基数排序
* 百数之内的排序