本文章代码来自于项目:
欢迎大家一起参与!我会不定时更新!
package acm;import java.util.Arrays;public class SortAlgorithms{ //插入排序 public static void InsertionSort(int[] arr) { int len = arr.length; int i,j; int key; for(j=1;j=0 && arr[i]>key) { arr[i+1]=arr[i]; i--; } arr[i+1]=key; } } //选择排序 public static void SelectionSort(int[] arr) { int len = arr.length; int min; for(int i=0; i i; j--) { if(arr[j] 1) { temp=arr[hLen-1]; arr[hLen-1]=arr[0]; arr[0]=temp; hLen--; max_heapify(arr, hLen, 0); } } private static void buildMaxHeap(int[] arr) //从无序数组中构造一个最大堆, n*lgn { int hLen = arr.length; int begin= hLen/2-1; for(int i=begin;i>=0;i--) { max_heapify(arr,hLen, i); } } private static void max_heapify(int[] arr, int hLen, int i) //用于调整堆,维护最大堆的性质,lgn { int left = 2*i+1; //i的左孩子,因为数组中下标是从0开始的 int right =2*i+2; //i的右孩子,因为数组中下标是从0开始的 int largest=i; if(left arr[i]) { largest = left; } if(right arr[largest]) { largest = right; } if(i!=largest) { int temp=arr[largest]; arr[largest]=arr[i]; arr[i]=temp; max_heapify(arr, hLen, largest); } }}