选择排序
原理: 内循环结束一次,最值(最大或最小)出现头角标位置上。
以一个角标上的元素为主和其他元素进行比较,满足条件就进行换位。
再改角标上的元素进行下次的比较;
详细代码如下:
public static void main(String[] args) {
int[] arr= {2,5,6,1,9};
System.out.println("原数组:");
printArray(arr);
System.out.println("从小到大排序:");
minSort(arr);
System.out.println("从大到小排序:");
maxSort(arr);
}
public static void minSort(int[] arr) {//从小到大排序
for (int i = 0; i < arr.length-1; i++) {
//i加1是因为第i个数肯定不能和本身比较;
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]) {
//换位的逻辑是
//假如有;两杯水,称为A和B;把A和B中的水互换,需要第三个杯子,就是C杯子;
/*
* C<--A
* A<--B
* B<--C
*/
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
//排序后输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void maxSort(int[] arr) {//从大到小排序
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]<arr[j]) {
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
//排序后输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void printArray(int[] arr) {//这个方法是原数组的输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
}