选择排序:
思想
- 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
编码实现:
代码
public void selectionSort(int[] arr){
if(arr == null || arr.length < 2)
return;
for(int i = 0;i < arr.length -1; i++){ //i~N-1
int minIndex=i;
for(int j= i + 1;j < arr.length; j++){ //i~N-1上找最小值下标
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr,i,minIndex);
}
}
/**
* 利用异或操作来实现两数交换
*
*/
public void swap(int[] arr,int i, int j){
if(i!=j){
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
}