標籤(空格分隔): 學習筆記java
1. 冒泡數組
public class MaoPao{ public static void sort(int[] arr){ for(int i=arr.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(arr[j]>arr[j+1]){ int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } } public static void main(String[] args){ int[] arr=new int[]{1,4,11,-3,34,5,-2,7,8,0,12,}; sort(arr); for(int num:arr){ System.out.print(num+" "); } } }
2. 快排學習
public class QuickkSort { public static void sort(int[] matrix,int start,int end) { if(start>=end) return; int l=start; int r=end; int tmp=matrix[l]; while(l<r) { while(matrix[r]>=tmp && l<r) { r--; } matrix[l]=matrix[r]; while(matrix[l]<=tmp && l<r) { l++; } matrix[r]=matrix[l]; } matrix[l]=tmp; sort(matrix,start,l-1); sort(matrix,l+1,end); } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12}; sort(arr, 0, arr.length-1); for (int num:arr) { System.out.print(num+" "); } } }
3. 選擇排序ui
public class SelectSort { public static void sort(int[] arr) { for(int i=0;i<arr.length;i++) { int mindex=i; for(int j=i;j<arr.length;j++) { if(arr[mindex]>arr[j]) mindex=j; } int tmp=arr[mindex]; arr[mindex]=arr[i]; arr[i]=tmp; } } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12}; sort(arr); for(int num:arr) { System.out.print(num+" "); } } }
4.直接插入code
public class InsertSort { public static void sort(int[] arr) { for(int i=0;i<arr.length-1;i++) { for(int j=i+1;j>0;j--) { if(arr[j]<arr[j-1]) { int tmp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=tmp; }else break; //break是必定要加的,若是插入以後不加break,插入以後還會和前面的比較,浪費時間 } } } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr=new int[] {1,4,11,-3,34,5,-2,7,8,0,12}; sort(arr); for(int num:arr) { System.out.print(num+" "); } } }
5.二分插入排序
public class Insert { public static void sort(int [] arr) { for(int i=0;i<arr.length-1;i++) { int left=0; int right=i; while(left<right) { int mid=left+(right-left+1)/2; if(arr[mid]>=arr[i+1]) { right=mid-1; } else { left=mid; } } int k=arr[i+1]>=arr[left]?left+1:left; //上述這段代碼還能夠解決一個二分查找問題,及若是找到某個數在數組中的索引,就返回他的索引,若是這個數存在多個,就返回最左邊的那個索引,效果不錯 int tmp=arr[i+1]; for(int j=i;j>=k;j--) { arr[j+1]=arr[j]; } arr[k]=tmp; } } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr=new int[] {1,9,2,2,6,8,3,56,23,66,21,12,14,34}; sort(arr); for(int num:arr) { System.out.print(num+" "); } } }