选择排序(不稳定)
以从小到大排序为例,第i次选择第i小的元素放在第i个位置,然后i++。
1.C++代码
void selectionSort(int arr[],int n){
for(int i=0;i<n;i++){
//寻找[i,n]区间里的最小值
int min=arr[i];//记录当前这一轮儿最小值
int syb=i;//记录当前这一轮儿最小值的下标
for(int j=i+1;j<n;j++){
if(min>arr[j]){
min=arr[j];//记录此次最小值
syb=j;//记录此次最小值下标
}
}
swap(arr[i],arr[syb]);//交换当前位置元素和当前轮儿最小值元素的位置
}
}
妈的好久不练习,写个选择排序也能写错,得多练习啊!!
2.Java代码
public class SelectionSort{
private SelectionSort(){}
public static void sort(int[] arr){
int n=arr.length;
for(int i=0;i<n;i++){
//寻找[i,n)区间里的最小值的索引
int minIndex=i;
for(int j=i+1;j<n;j++){
if(arr[j]<arr[minIndex])
minIndex=j;
}
swap(arr,i,minIndex);
}
}
private static void swap(int[] arr,int i,int j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
调用时直接调用SelectionSort.sort(arr)即可。