3.排序之选择排序
问题描述
- 对数组进行选择排序
- 对数组进行升序排序
- 对数组进行降序排序
计算方式
- 先比较出一个最值放到最右边或最左边
- 如首先留最左边的值为最值A(0),直接比较除这个值外的所有值,找出一个最值,再比较A(0),和最值的大小,把比较出来的最后最值,放到A(0)位置
- 同样方法比较A(1),A(2)....
- 此方法,不要频烦的去交换数组元素的值
源码
package com.opensourceteams.modeles.common.gramar.数组;
/**
* 开发者:刘文 Email:[email protected]
* 16/2/25 下午9:58
* 功能描述:选择排序
* 数组选择排序升序
* 数组选择排序降序
*/
public class ArraySortSelect {
/**
*
* @param args
*/
public static void main(String[] args) {
int[] array = {3,9,5,5,10,1};
println(arraySortSelectAsc(array));
println("============");
println(arraySortSelectDesc(array));
}
/**
* 数组选择排序升序
* @param array
* @return
*/
public static int[] arraySortSelectDesc(int[] array){
if(array == null || array.length == 0){
System.out.println("直接退出了");
return array;
}
int temp = array[0];
int index = 0 ;
for(int i = 0 ; i < array.length ; i++){
temp = array[i];
index = i;
for(int j = i + 1 ; j < array.length;j++){
if(array[j] > temp){
temp = array[j];
index = j;
}
}
if(temp > array[i] ){
array[index] = array[i];
array[i] = temp;
}
}
return array;
}
/**
* 数组选择排序降序
* @param array
* @return
*/
public static int[] arraySortSelectAsc(int[] array){
if(array == null || array.length == 0){
System.out.println("直接退出了");
return array;
}
int temp = array[0];
int index = 0 ;
for(int i = 0 ; i < array.length ; i++){
temp = array[i];
index = i;
for(int j = i + 1 ; j < array.length;j++){
if(array[j] < temp){
temp = array[j];
index = j;
}
}
if(temp < array[i] ){
array[index] = array[i];
array[i] = temp;
}
}
return array;
}
/**
* 打印数组
* @param array
*/
public static void println(int[] array){
for(int i = 0 ; i < array.length ; i++){
System.out.println(array[i]);
}
};
/**
* 打印对象
* @param obj
*/
public static void println(Object obj){
System.out.println(obj.toString());
};
}