算法初探|八大经典排序算法(java)

【算法初探|八大经典排序算法(java)】算法初探|八大经典排序算法(java)
文章图片

package com.算法.排序; public class 冒泡排序 { // 时间复杂度 :O(n2); public static void main(String[] args){ int[] array = new int[100000]; for(int i=0; iarray[j+1]){ flag=true; int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } if(!flag){ break; }else{ flag=false; } } return array; } }

package com.算法.排序; public class 选择排序 { //时间复杂度:O(n2) public static void main(String[] args){ int[] array = new int[100000]; for(int i=0; iarray[j]){ min=array[j]; index=j; } } if(i!=index){ array[index] = array[i]; array[i] = min; } } return array; } }

package com.算法.排序; public class 插入排序 { //时间复杂度:O(n2); public static void main(String[] args) { int[] array = new int[100000]; for(int i=0; i=0&&data

package com.算法.排序; public class 希尔排序 { //希尔排序的时间复杂度依赖于增量序列的选择,理论分析比较复杂.有实验结果表明,当n较大时,时间复杂度大约在O(n1.25)到O(n1.36)之间. public static void main(String[] args){ int[] array = new int[100000]; for(int i=0; i0; i/=2){ //将数据分为i组 for(int j=i; j=0&&value

package com.算法.排序; public class 快速排序 { //时间复杂度O(nlogn) public static void main(String[] args) { int[] array = new int[100000]; for(int i=0; i=temp){ j--; } while(ihead) array=sort05(array,head,i-1); if(j+1

package com.算法.排序; public class 归并排序 { //时间复杂度:O(nlogn) public static void main(String[] args) { int[] array = new int[100000]; for(int i=0; i

package com.算法.排序; public class 基数排序 { //时间复杂度:O(n*k) public static void main(String[] args) { int[] array = new int[100000]; for(int i=0; i

package com.算法.排序; public class 堆排序 { //时间复杂度O(nlogn) public static void main(String[] args){ int[] arr =new int[100000]; for(int i=0; i=0; i--){ //以i为节点向下调整 heapsort(arr,i,len); } //System.out.print(arr[0]+" "); swap(arr,0,len-1); } long t2 = System.currentTimeMillis(); System.out.println("堆排序算法耗费"+(t2-t1)+"毫秒"); } public static void heapsort(int[] arr,int x,int len){ //在arr数组中以x为父节点向下调整 int temp ; boolean flag = false ; int i =x; while((i*2+1)

    推荐阅读