排序,今天只看了冒泡,插入,快速三种排序算法分别对三组数据{3,15,7,20,9,3,12,17};{3,5,7,9,15,23,30,45};{45,30,23,15,9,7,5,3};进行处理。
##插入排序
package sort; public class InsertSort { public static void main(String[] args) { long begin = System.nanoTime(); int[] arr={3,15,7,20,9,3,12,17}; for(int i=1;i<arr.length;i++){ int t=i; for(int j=i-1;j>=0;j--){ if(arr[t]<=arr[j]){ int temp=arr[t]; arr[t]=arr[j]; arr[j]=temp; t--; } else break; } } long end = System.nanoTime(); OutPut(arr); System.out.print("\n"); System.out.print((end-begin)+"ns"); } private static void OutPut(int[] a){ for(int i:a) System.out.print(i+"\t"); } }
插入排序对三组数据的处理时间结果:
##冒泡排序
package sort; public class BubbleSort { public static void main(String[] args) { long begin = System.nanoTime(); int[] arr={3,15,7,20,9,3,12,17}; bubblesort(arr); long end = System.nanoTime(); OutPut(arr); System.out.print("\n"); System.out.print((end-begin)+"ns"); } public static void bubblesort(int[] a){ for(int i=0;i<a.length;i++) for(int j=i;j<a.length;j++) if(a[i]>a[j]){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } } private static void OutPut(int[] a){ for(int i:a) System.out.print(i+"\t"); } }
冒泡排序对三组数据的处理时间结果:
##快速排序
package sort; public class QuickSort { public static void main(String[] args) { int[] arr={3,15,7,20,9,3,12,17}; long begin = System.nanoTime(); quicksort(arr,0,arr.length-1); long end = System.nanoTime(); OutPut(arr); System.out.print("\n"); System.out.print((end-begin)+"ns"); } private static void quicksort(int[] a,int left,int right){ int dp; if(left<right){ dp=partition(a,left,right); quicksort(a,left,dp-1); quicksort(a,dp+1,right); } } private static int partition(int[] a, int left, int right) { int pivot=a[left]; while(left<right){ while(left<right&&a[right]>=pivot) right--; if(left<right) a[left++]=a[right]; while(left<right&&a[left]<=pivot) left++; if(left<right) a[right--]=a[left]; } a[left]=pivot; return left; } private static void OutPut(int[] a){ for(int i:a) System.out.print(i+"\t"); } }
快速排序对三组数据的处理时间结果:
时间复杂度对比:
时间: 2024-10-21 23:25:56