每天学点java_java选择排序

package com.czj;

public class SelectSort {
    /**
     * 选择排序,对sortArray传入的数组进行从小到大排序。
     * 思路就是   找到数组中最小的值,放到数组第一个位置,然后找到第二个最小值,放到第二个位置
     * @param sortArray
     */
    public void selectSort(int[] sortArray){
        int last=sortArray.length; //last为数组长度
        for(int i=0;i<last;i++){ //遍历循环数组
            int currentMin=sortArray[i];//设定数组第一个为最小值
            int currentMinIndex=i;//记录下标

            //找出比设定的最小值更小的值,记录值和下标
            for(int j=i;j<last;j++){
                if(currentMin>sortArray[j]){//这里换成大于号可以让数组从大到小排列
                    currentMin=sortArray[j];
                    currentMinIndex=j;
                }
            }
            //进行交换,把最小的值换到最前面,
            if(currentMinIndex!=i){
                sortArray[currentMinIndex]=sortArray[i];
                sortArray[i]=currentMin;
            }
        }
    }

    public static void main(String[] args) {
        int[] sortNum={1,5,2,7,4,9,345,234};
        SelectSort selectSort=new SelectSort();
        selectSort.selectSort(sortNum);
        for(int i:sortNum){
            System.out.print(i+",");
        }
    }

}
时间: 2024-10-08 21:20:32

每天学点java_java选择排序的相关文章

【从0到1学算法】选择排序

又到了算法时间,今天我们来学第二种算法---选择排序.这里有个表格,记录了乐队及其作品的播放次数,如下: 要将它们按播放次数从多到少排序,要怎么做呢?有一种方法是这样子的,遍历列表,找出播放次数最多的乐队,将这个乐队添加到一个新的列表中. 再次这样做,找出第二多的乐队. 循环上述做法,最终便可得到一个有序列表. 上述这种算法便是选择排序法,n次遍历列表选出最大/小进行排序.我们用代码来一遍呗.题目:对一个数组从小大排序 # 找到最小值的索引 def?find_smallest(arr): ? ?

一天一学数据结构之选择排序

每次 从待排序序列中选择出一个最大(或者最小)的记录添加到有序序列的后面即为选择排序. 选择排序主要有:简单选择排序.树形选择排序.堆排序. 1.简单选择排序 基本思路:重复进行n趟选择,第i趟通过n-i次记录的比较,在n-i+1个记录中选取最小(或最大)的记录与第i个记录进行交换. void selectSort(int arr[],int n){ int outer,inner; int min; for(outer=1;outer<=n;outer++ ){ min = outer; fo

关于算法--蛮力法篇--选择排序

近日开始学习算法,所看课本为清华大学出版社的<算法设计与分析基础>,对简单的数据结构进行了复习,已经学习了算法效率分析基础. 本篇开始对所学算法的思想进行实际JS编码,看学习的进度,每日写一篇学到的算法,以上为背景. 蛮力法是一种直接解决问题的方法,常常基于问题的描述和所涉及的概念定义:所谓的“力”,指的是计算机的计算能力. 优点是①可解决广阔的领域各种问题:②可以产生一些合理的算法:③实例不多时,可用一种能接受的速度求解:④可解决一些小规模问题实例:⑤可作为研究或教学目的,作为其他算法的准绳

一招教你搞定c语言中冒泡和选择排序

一.选择排序 很多学习C语言的同学都被这两种排序而难倒.每次拿到这样一组数字就不知道从何下手了,要不就是那些运用的不太熟悉,每次写起代码来又得花一大半时间让费在这排序上,总是找不到一种好的办法去学习它.那么接下来,我将我所学到的排序方法分享给大家,告诉你们以后遇到这种排序千万不能急.当然,很多企业面试的时候种排序也是必考的,所以我们务必要把他们搞懂,不能让这么小小的排序阻挡了我们前进的步伐.好了,那我们来看看吧! 我选择的方法是函数调用的方法,将排序的具体方式通过函数调用到main函数中执行,具

基础排序算法(冒泡排序,选择排序,插入排序)

最近经常调用api中的排序算法,很少自己写了,有时候也只写写快速排序这些比较快的排序,然而刚开始学排序时用的一些基本的排序算法却有点忘了 正好今天Java老师让我们每个人写个选择排序热热手,趁这个机会再来复习下一些基本的排序好了. 一.冒泡排序(稳定排序) 学编程接触到的第一个排序算法,基本思路就是,给定一个无序数组a0.a1.a2.a3....an; 通过从左到右相邻的元素两两比较,把最大或者最下的数依次放到数组的右边,最后得到有序的序列 public static void maoPao(i

黑马程序员——冒泡排序和选择排序——熟悉又陌生的排序方法

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 昨天做基础测试题,遇到了个排序问题,写完后脑子里突然跳出了“冒泡排序法”这个名词.“冒泡排序法”和“选择排序法”是每个程序初学者都会学到的两个排序方法,但是好多人对这两个排序方法是既熟悉又陌生,熟悉是因为凡是遇到排序一般都会想到这两个方法,陌生是因为细细一想对这两个方法的原理和区别又不是很清楚.不较真还好,初学者一较真就很容易被这两个方法搞晕了,我当时也被这两个方法搞晕了,就又认认真真一步一步

黑马程序员——选择排序

排序算法有很多,记得当初一开始学C时就有这种问题.那个时候会用也最易理解的排序算法,就是选择排序了(当时并不知道这样的算法还有名字). 思想 还是先来看看选择排序的思想.选择排序的思想非常直接,不是要排序么?那好,从所有序列中先找到最小的,然后放到第一个位置.之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了.可以很清楚的发现,选择排序是固定位置,找元素. // // main.m // SelectSort // // Created by 张贵广 on 15/1

StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13

1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } B:获取最值 public static int getMax(int[] arr) { int max

JAVA基础-数组的排序(选择排序和冒泡排序),总结精辟!!!

1.-------寄语 对于初学JAVA的同学来说,排序是在陌生不过的一个基础题了.但是由于自己刚刚步入学习JAVA的世界,很多东西不能很好的理解,导致自己虽然可以敲出代码或者大致能够想明白, 但是对于解决问题的思想并没有很好的深入.(其实一开始学习也没必要太刨根问底,等到自己有一定的基础了,有时间了再研究一下.抱着研究的态度感觉会更好一点.其实大部分目前的 开发者都是经过了一段时间的培训,在培训的过程中,课程速度特别快,有时候我们必须要“不拘小节”,掌握培训中的主流知识才是明智之举.如果你正在