1.冒泡排序
package com.biienu.sorttest;
public class BubbleSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1, 10,-10};
sort(temp);
for(int i : temp){
System.out.print(i + " ");
}
}
static void sort(int[] nums){
int len = nums.length;
for (int i = 0; i < len - 1; i++) {
for(int j = 0; j < len - i - 1; j++){
if(nums[j] > nums[j + 1]){
swap(nums, j, j + 1);
}
}
}
}
static void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
返回目录
2. 选择排序
package com.biienu.sorttest;
public class SelectSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1, 10, -1};
sort(temp);
for(int i : temp){
System.out.print(i + " ");
}
}
static void sort(int[] nums){
int len = nums.length;
for (int i = 0; i < len - 1; i++) {
int min = i;
for (int j = i; j < len ; j++) {
if(nums[j] < nums[min]){
min = j;
}
}
if(min != i){
swap(nums, i, min);
}
}
}
static void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
返回目录
3.插入排序
package com.biienu.sorttest;
public class InsertSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1, 10};
sort(temp);
for(int i : temp){
System.out.print(i + " ");
}
}
static void sort(int nums[]){
int len = nums.length;
for (int i = 1; i < len; i++) {
int j;
int temp = nums[i];
for (j = i; j > 0; j--) {
if(nums[j - 1] > temp){
nums[j] = nums[j - 1];
continue;
} else break;
}
nums[j] = temp;
}
}
}
返回目录
4. 希尔排序
package com.biienu.sorttest;
public class SelectSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1, 10, -1};
sort(temp);
for(int i : temp){
System.out.print(i + " ");
}
}
static void sort(int[] nums){
int len = nums.length;
for (int i = 0; i < len - 1; i++) {
int min = i;
for (int j = i; j < len ; j++) {
if(nums[j] < nums[min]){
min = j;
}
}
if(min != i){
swap(nums, i, min);
}
}
}
static void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
返回目录
5. 归并排序
package com.biienu.sorttest;
public class MergeSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1, 10};
mergeSort(temp, 0, temp.length-1 );
for(int i : temp){
System.out.print(i + " ");
}
}
static void mergeSort(int[] arr, int left, int right){
if(left < right){
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
static void merge(int[] arr, int left, int mid, int right){
int[] tempArray = new int[right - left + 1];
int l1 = left, l2 = mid + 1;
int index = 0;
while(l1 <= mid && l2 <= right){
if(arr[l1] < arr[l2]){
tempArray[index ++] = arr[l1++];
} else{
tempArray[index ++] = arr[l2++];
}
}
if(l1 <= mid){
System.arraycopy(arr, l1, tempArray, index, mid - l1 + 1);
}
if(l2 <= mid) {
System.arraycopy(arr, l2, tempArray, index, right - l2 + 1);
}
System.arraycopy(tempArray, 0,arr, left, right - left + 1);
}
}
返回目录
6. 快速排序
package com.biienu.sorttest;
public class QuickSort {
public static void main(String[] args) {
int[] temp = {2,1,0,-1,-1,-1, 10};
quickSort(temp, 0, temp.length-1 );
for(int i : temp){
System.out.print(i + " ");
}
}
static void quickSort(int[] nums, int left, int right){
if(left < right){
int index = partion1(nums, left,right);
quickSort(nums, left, index - 1);
quickSort(nums, index + 1, right);
}
}
private static int partion(int[] nums, int left, int right) {
int pivot = nums[left];
while(left < right){
while(left < right && nums[right] >= pivot){
right--;
}
if(left < right) nums[left] = nums[right];
while (left < right && nums[left] <= pivot){
left++;
}
if(left < right) nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
private static int partion1(int[] nums, int left, int right){
int pivot = nums[left];
int start = left;
while (left < right){
while(left < right && nums[right] >= pivot){
right--;
}
while (left < right && nums[left] <= pivot){
left++;
}
if(left >= right) break;
swap(nums, left, right);
}
swap(nums, start, left);
return left;
}
static void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
返回目录
7. 堆排序
package com.biienu.sorttest;
public class HeapSort {
public static void main(String[] args) {
int[] nums = {1,2,3,4,-1,-2,-3};
sort(nums);
for(int i : nums){
System.out.print(i + " ");
}
}
static void sort(int[] nums){
int len = nums.length;
for(int i = len / 2 ; i >= 0; --i){
sink(nums, i, len);
}
int k = len;
while(k > 0){
swap(nums, 0, k - 1);
sink(nums, 0, --k);
}
}
static void sink(int[] nums, int index, int len){
while(index * 2 + 1 < len){
int j = index * 2 + 1;
if(j + 1 < len && nums[j] < nums[j + 1]){
j++;
}
if(nums[index] < nums[j]){
swap(nums, index, j);
} else break;
index = j;
}
}
static void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
返回目录
github地址
https://github.com/biienu