线性排序
冒泡排序
package com.jiedada.creat; public class maopao { public static void main(String[] args) { // TODO Auto-generated method stub Randm arr=new Randm(); int a[]=arr.randm(10, 10, 50); int temp; for(int i=0;i<a.length;i++) { for(int j=0;j<a.length-i-1;j++) { if(a[j+1]<a[j]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int n:a) { System.out.print(n+" "); } } }
1选择排序
思想在一串数字中找到最小的和初始位置交换顺序;
这次遇到很多问题。比如在for中i<a是跳出的是a-1但是并没有执行a-1;
交换时忘记。。
在random中生成的时[0,1)的数,如果我们需要其他数需要在上面做运算
选择排序方法
package com.jiedada.one; import com.jiedada.creat.Randm; public class One { public static void main(String[] args) { // TODO Auto-generated method stub //Randm arr=new Randm(); Randm arr=new Randm(); int arr1[]= arr.randm(20,1,20); for(int i=0;i<arr1.length-1;i++) { int minIndex=i; int j; for(j=i+1;j<arr1.length;j++) { if(arr1[j]<arr1[minIndex]) { minIndex=j; } } int temp; temp=arr1[i]; arr1[i]=arr1[minIndex]; arr1[minIndex]=temp; } for(int n:arr1) { System.out.print(n+" "); } } }
随机数生成代码
package com.jiedada.creat; public class Randm { public int[] randm(int n,int min,int max) { int arr[]=new int[n]; for(int i=0;i<n;i++) { arr[i]=(int)(Math.random()*(max-min+1)); } return arr; } }
2插入排序
常见错误1交换写错,逻辑写错,循环结构写错,输出数组要用加强型for循环
package com.jiedada.creat; public class CreatTwo { public static void main(String[] args) { // TODO Auto-generated method stub Randm arr=new Randm(); int temp; int arr1[]= arr.randm(10, 10, 50); for(int i=1;i<arr1.length;i++) { for(int j=i;j>0;j--) { if(arr1[j]<arr1[j-1]) { temp=arr1[j-1]; arr1[j-1]=arr1[j]; arr1[j]=temp; } else { break; } } } for(int n:arr1) { System.out.print(n+" "); } } }
改进插入排序
package com.jiedada.creat; public class CteatThree { public static void main(String[] args) { // TODO Auto-generated method stub Randm arr=new Randm(); int a[]=arr.randm(10, 10, 50); for(int i=1;i<a.length;i++) { int j; int s=a[i]; for(j=i;j>0;j--) { if(s<a[j-1]) { a[j]=a[j-1]; } else { break; } } a[j]=s; } for(int n:a) { System.out.print(n+" "); } } }