1、冒泡排序
思想:通俗来说,就像泡泡向上冒一样,每次都是最小的漂到上面,假如在同一个立体空间中,每次最小(最大)的到达一个端点,然后把这个端点的位置确定,再在其他的泡泡中找出最小(最大)的到达其他剩余部分的端点,依次进行下去。就是冒泡排序。
package Sort; import java.util.Scanner; public class maopao { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; int temp; System.out.println("定义数组长度:"); while(sc.hasNextInt()) { temp=0; n=sc.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++) { System.out.print("输入第"+i+"个数。"); arr[i]=sc.nextInt(); } for(int j=0;j<arr.length;j++) { for(int k=0;k<arr.length-1-j;k++) { if(arr[k]>arr[k+1]) { temp=arr[k]; arr[k]=arr[k+1]; arr[k+1]=temp; } } } System.out.print("输出排序后数组:"); System.out.print(arr[0]); for(int i=1;i<arr.length;i++) { System.out.println(" "+arr[i]); } System.out.println(); } } }
2、选择排序
思想:每次都是找到这一列数的最小(最大)与第一个数交换位置,依次进行下去,就是选择排序。
package Sort; import java.util.Scanner; public class selectSort { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("选择排序:"); System.out.println("请输入一个数组长度,可多次输入"); while(sc.hasNextInt()) { int temp = 0; int n=sc.nextInt(); int[] arr= new int[n]; for(int i=0;i<n;i++) { System.out.print("输入第"+(i+1)+"个数字"); arr[i]=sc.nextInt(); } for(int j=0;j<n;j++) { int min=j; for(int k=j+1;k<n;k++) { if(arr[min]>arr[k]) { min=k; } } if(j!=min) { temp=arr[j]; arr[j]=arr[min]; arr[min]=temp; } } System.out.println("输出排序后数组:"); System.out.print(arr[0]); for(int i=1;i<n;i++) { System.out.print(" "+arr[i]); } System.out.println(); } } }
3、插入排序
思想:相对前两种排序,代码可能会比较难理解一点,通俗的来说,就是补一个数列分成两部分,第一部分开始的时候只有第一个数字,每次都拿出第二部分数组的第一个数插入到第一部分 数组的 合适位置,依次进行到最后,使两个数组合并成一个数组。
package Sort; import java.util.Scanner; public class insertSort { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("插入排序:"); System.out.println("请输入数组长度,可多次输入:"); while(sc.hasNextInt()) { int temp=0; int k; int n=sc.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++) { System.out.print("请输入第"+(i+1)+"个数"); arr[i]=sc.nextInt(); } for(int j=1;j<n;j++) { temp=arr[j]; k=j-1; while(k>= 0&&temp<arr[k]) { arr[k+1]=arr[k]; k--; } arr[k+1]=temp; } System.out.println("输出排序后的数列:"); System.out.print(arr[0]); for(int t=1;t<n;t++) { System.out.print(" "+arr[t]); } System.out.println(); } } }
欲知后事如何,请等待排序算法(二)。。。