七種基於比較排序演算法記憶口訣:
冒擇入希速歸堆(冒失選擇入口的希望是快速回歸馬王堆
氣泡排序:
public class bubblesort //從右邊開始,每次迴圈最小值向左沉下去}}
}}選擇排序:
public class selectionsort
}tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
} //右邊未排序比左邊已排序的最大值要大}}
插入排序:
public class insertsort
arr[j] = tmp;
} //拿未排序的第乙個數值跟已排序的從右往左比較,找到比其小的位置插入
}希爾排序(插入排序改進版):
public class shellsort
while(h > 0)
arr[j] = tmp;
}//減小間隔
h = (h - 1) / 3;}}
}快速排序(氣泡排序改進版):
public class quicksort else
}//將關鍵字和當前leftptr所指的這乙個進行交換
long tmp = arr[leftptr];
arr[leftptr] = arr[right];
arr[right] = tmp;
return leftptr;
}public static void sort(long arr, int left, int right) else }}
歸併排序:
public class mergesort
return nums;
} public static void merge(int nums, int low, int mid, int high) else
} // 把左邊剩餘的數移入陣列
while (i <= mid)
// 把右邊邊剩餘的數移入陣列
while (j <= high)
// 把新陣列中的數覆蓋nums陣列
for (int k2 = 0; k2
} }
堆排序:
public class heap
else
}public void snp(int arrays)else
}else if(arrays[i]
基於非比較排序演算法:計數排序,桶排序,基數排序
計數排序:
時間複雜度o(n)
public
class
countsort
for
(
int
i =
1
; i < count.length; i++)
int
sortarr =
new
int
[a.length];
for
(
int
i =
0
; i < sortarr.length; i++)
return
sortarr;
}
}
Java實現基本排序演算法
public class sort public static sort getinstance return sort private void move int array,int from,int end 交換陣列中的兩個元素的位置 param array 待交換的陣列 param i 第乙個...
基本排序演算法Java實現
1 氣泡排序 氣泡排序 bubble sort,台灣另外一種譯名為 泡沫排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由...
基本演算法 堆排序 Java實現
堆排序就是將序列調整為指定的堆,然後調整首尾元素的位置,取出末尾元素,反覆進行,直到將所有元素取出,形成乙個有序的序列。假設存在 個元素的序列 其中父節點值不大於子節點值的堆稱為小根堆 r i r2 i 1且 ri r 2i 2 父節點的值不小於子節點的堆稱為大根堆 r i r2 i 1且 存在乙個...