八大排序算法之选择排序算法(JAVA)

选择排序(SelectionSort)
简单选择排序的基本思想 给定数组:int[] a={ 里面 n 个数据 } 第1 排序,在待排序数据a[1]~a[n] 中选出最小的 数据,将它与a[1] 交换 ;第2 趟,在待排序 数据a[2]~a[n] 中选出最小的 数据,将它与a[2] 交换 ;以此类推,第i 趟在待排序 数据a[i]~a[n] 中选出最小的 数据,将它与a[i] 交换 ,直到全部排序完成
源代码:
package com.sunMac.eightSort;

public class SelectionSort {
public static void main(String[] args) {
int[] array={3,2,5,8,4,7,6,9};
System.out.println("排序前:");
for (int i : array) {
System.out.print("->"+i);
}
System.out.println('\n'+"排序后:");
sort(array);
for (int i : array) {
System.out.print("->"+i);
}
}
public static void sort(int []array){
for(int i=0;i<array.length-1;i++){
//外层遍历数组
int k=i;
for(int j=k+1;j<array.length;j++){ //选择最小的记录
if(array[j]<array[k]){
k=j; //记下目前找到的最小值所在的下标
}
}
if(i!=k){ //内层循环结束,找到最小值后进行交换
int temp=array[i]; //交换啊a[i]和a[k]
array[i]=array[k];
array[k]=temp;
}
}
}
}
时间复杂度 :简单选择排序的 比较次数与序列的初始排序无关 。 假设待排序的序列有 N 个元素,则 比较次数永远都是N (N - 1) / 2 。而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0。当序列反序时,移动次数最多,为3N (N - 1) /  2。
所以,综上,简单排序的 时间复杂度为 O(N2)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值