算法与数据结构—选择排序
算法思路
例如:给定一个无序数组int arr={1,3,2,6,9}; n代表集合数组的长度,给出一个算法将数组arr按照从小到大的顺序进行排列。
选择排序:遍历[i,n)寻找最小值,找到之后与i的位置进行交换,以此类推。
代码
public static void selectionSort(int[] arr,int n){
for(int i=0;i<n;i++){
int minIndex=i;//最小值下标,初始化为数组的第一个数
/*寻找最小值*/
for(int j=i+1;j<n;j++){//第一个数默认为最小,所以从i+1的位置进行遍历
if(arr[j]<arr[minIndex]){
//保存最小值下标
minIndex=j;
}
}
/*与i的位置进行交换*/
swap(arr,i,minIndex);
}
}
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
时间复杂度
O(n^2)