习题1
班级里五个人成绩比较升序排列,成绩分别为64,75,88,92,21
package xuanze; import java.util.*; public class chapter1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int arr[]=new int[n]; for(int i=0;i<n;i++) { arr[i]=scan.nextInt(); } int minindex=0; for(int i=0;i<n;i++) { //经过n-1轮 minindex=i; for(int j=i+1;j<n;j++) { if(arr[j]<arr[minindex]) { minindex=j; } } if(minindex!=i) { //minindex!=i说明最小值不是下标为i的,我们需要与将下标为i的与minindex的交换 int tmp=arr[minindex]; arr[minindex]=arr[i]; arr[i]=tmp; } System.out.print(arr[i]+" "); } } }
习题2
假设待排序列为5,3,6,1,0,如果采用选择排序对其进行升序排序,则整个排序过程如下:
从后往前也是一种
package xuanze; import java.util.*; public class chapter2 { public static void main(String args[]) { Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []arr=new int[n]; int res=n-1; for(int i=1;i<n-1;i++) { for(int j=n-i;j>=0;j--) { if(arr[j]>arr[res]) { int tmp=arr[res]; arr[res]=arr[j]; arr[j]=tmp; } } res--; System.out.print(arr[res]+" "); } } }
习题3
使用选择排序对给定数组进行排序。输入:一个包含n个整数的数组。输出:按照升序排序的数组
示例:[5,2,8,9,1,3]
package xuanze; import java.util.*; public class chapter3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []arr=new int[n]; for(int i=0;i<n-1;i++) { for(int j=1;j<n-i-1;j++) { if(arr[j]<arr[i]) { int tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } } System.out.print(arr[i]+" "); } } }