SelectionSort

复制代码
package Sort;
/**
 * 选择排序(Selection-sort)是一种简单直观的排序算法
 *  首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
 *  然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
 *  以此类推,直到所有元素均排序完毕
 *  复杂度:O(n^2)
 *  稳定性:不稳定,
 *      原因:假设有一个数组`array={1,2,5,5,3}
 *      1.第一轮排序,用1和右侧所有元素比较,1最小,不换位array={1,2,5,5,3}
 *      2.第二轮排序,用2和2后面的所有元素比较,2最小,不换位array={1,2,5,5,3}
 *      3.第三轮排序,用第三个5和其后面元素比较,3最小,换位array={1,2,3,5,5}
 *      4.注意,本来在下标2位置的5和元素3(下标4)换位后,被移动到了数组末尾。而这个5和下标3位置的5大小相等。
 *          原本在下标4位置的5的前面,换位后被移动到了后面
 *      5.第四轮,用下标3位置的5和最后一个元素5比较,相等,不换位。得出数组array={1,2,3,5,5}
 * */
public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = new int[]{18, 4, 69, 3, 10, 20, 87, 33};
        int condition = arr.length;
        for (int i = 0; i < condition -1; i++) {
            int minindex = i;
            for (int j = i+1; j < condition; j++) {
                if (arr[j] < arr[minindex]){
                    minindex = j;
                }
            }
            if (minindex != i){
                int temp = arr[minindex];
                arr[minindex] = arr[i];
                arr[i] = temp;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
复制代码

 

posted @   坤坤无敌  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示