标签(空格分隔): 学习笔记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+" "); } } }