`

【转】第三课 选择排序

阅读更多
1.选择排序类
package com.flysnow.chap03;   
  
/**  
 * 选择排序  
 * @author 飞雪无情  
 * @since:2010-3-25  
 */  
public class ArraySel {   
    private long[] a;   
    private int nElems;   
    public ArraySel(int max){   
        a=new long[max];   
        nElems=0;   
    }   
    /**  
     * 插入元素  
     * @param value  
     */  
    public void insert(long value){   
        a[nElems]=value;   
        nElems++;   
    }   
    /**  
     * 打印元素  
     */  
    public void display(){   
        for(int i=0;i<nElems;i++){   
            System.out.print(a[i]+" ");   
        }   
        System.out.println();   
    }   
    /**  
     * 选择排序  
     */  
    public void selectionSort(){//性能交换O(N) 比较 O(N^2)   
        int out,min,in;   
        for(out=0;out<nElems-1;out++){   
            min=out;//默认第一个最小   
            for(in=out+1;in<nElems;in++){   
                if(a[in]<a[min]){   
                    min=in;   
                }   
            }   
            swap(out, min);   
        }   
    }   
    /**  
     * 交换  
     * @param one 数组索引  
     * @param two 数组索引  
     */  
    private void swap(int one, int two) {   
        long temp=a[one];   
        a[one]=a[two];   
        a[two]=temp;   
    }   
} 

2.选择排序测试
package com.flysnow.chap03;

import java.util.Random;

/**
 * 选择排序测试
 * @author 飞雪无情
 * @since:2010-3-25
 */
public class SelectSortApp {
	public static void main(String[] args){
		ArraySel sel=new ArraySel(100);
		Random random=new Random();
		for(int i=0;i<10;i++){//添加10个随机数
			sel.insert((long)(random.nextFloat()*100));
		}
		sel.display();//未排序
		sel.selectionSort();//排序
		sel.display();//排序后
	}
}

3.总结
算法思想:

把所有数据扫描一遍,找出最小的数据,把他放在第一个位置(0号)
从第二个数据开始,扫描数据,找出最小的数据,把他放在第二个位置(1号)
从第三个数据开始,扫描数据,找出最小的数据,把他放在第三个位置(2号)
......
以此类推,知道全部数据有序


  • 大小: 29.5 KB
分享到:
评论

相关推荐

    第3课 桶排序.pdf--

    但是,对于输入数据分布极不均匀或数据范围很大的情况,桶排序可能不是最佳选择,且其空间复杂度也可能是需要考虑的一个因素。在编程实现时,还需要根据具体问题调整桶的大小和数量,以及处理特定逻辑以满足题目要求...

    第4课 桶排序训练.pdf

    3. **桶内排序**:对每个非空桶,使用其他排序算法(如快速排序、插入排序等)对桶内的数据进行排序。 4. **合并结果**:按照桶的顺序,依次取出每个桶内的排序后数据,合并成最终的有序序列。这个过程中,如果桶内...

    第7课 快速排序.pdf

    3. `cmp`参数是一个可选的比较函数,用于指定排序规则,默认情况下,它会按照从小到大的顺序排序。如果需要按照从大到小的顺序排序,可以自定义一个比较函数,例如`bool cmp(const Type& x, const Type& y)`,在函数...

    Excel中数据排序和筛选(县级公开课).ppt

    **示例:** 若要筛选出图书销售情况表中第3和第4季度的销售情况,可以选择季度列的下拉箭头,选择第3季度或第4季度。 ##### 2.2 高级筛选 **作用:** 使用更复杂的条件进行筛选,适用于需要组合多个条件的情况。 *...

    数据结构教程(共四十课)

    第一课:数据结构的基本概念和术语 第二课:抽象数据类型的表示与实现 ...第三十六课:选择排序,归并排序 第三十七课:实验八 排序实验 第三十八课:文件概念,顺序文件 第三十九课:索引文件 第四十课:总复习

    汇编输入三门成绩按总分排序

    第三门课程的成绩 blank3db'' ; 分隔符 score4dw'00' ; 总分 overdb'' ; 分隔符 studentends ``` 这里定义了10个这样的数据结构,以便可以存储10名学生的信息。 #### 四、成绩录入 成绩录入模块负责从用户那里...

    Dreamweaver教程

    第3课 对象面板 第23课 调整表格大小 第4课 启动面板和属性检查器 第24课 表格排序 第5课 HTML源码检查器 第25课 创建框架 第6课 层与层面板 第26课 选择框架和框架集 第7课 层的属性设置和操作 ...

    第28章、排序、栈和队列(理论课).ppt

    - 第三轮:`2,3,5,8,9` - **时间复杂度**:最好情况下,时间复杂度为O(n),平均和最坏情况均为O(n^2)。 - **空间复杂度**:O(1)。 ##### 2. 选择排序 - **定义**:选择排序是一种简单直观的排序算法,其工作原理...

    C语言中冒泡法、选择法、插入法三种常见排序算法分析

    冒泡排序、选择排序和插入排序是三种常用的简单排序算法,它们各具特点且应用场景广泛。下面将详细介绍这三种排序算法的原理、特点和实现方法。 首先,冒泡排序(Bubble Sort),也称为起泡法。它是一种简单的排序...

    含听力六年级上册Unit 5 Part B第三课时课课练及答案【人教版】精选.doc

    第三部分的题目要求学生为给定的句子选择匹配的图片,比如"My aunt can type quickly. She can be a secretary."这样的句子与一位快速打字的女性形象相匹配,这样可以训练学生将文字信息与图像信息相结合的能力,...

    第6课 统计数字——归并排序(count)-2020.04.11.pdf

    在介绍归并排序之前,需要先了解一下快速排序算法,因为文档提到第5课已经用快速排序的方法解决过相同的问题。快速排序是一种基于分治策略的排序算法,其基本思想是:在数组中选择一个基准元素,然后将数组中小于...

    第5次课 排序工作量(逆序对)-2020-12-20.pdf

    6. 归并操作与逆序对:在归并两个有序数组的过程中,如果从第二个数组中取出一个元素放入结果数组,那么该元素之前的所有元素都会与当前第一个数组中的元素形成逆序对。通过这种方式可以统计出子序列间的逆序对数。 ...

    第三次小班研讨课问题1

    【第三次小班研讨课问题1】涉及的知识点是选择法排序。选择法排序是一种简单直观的排序算法,它的工作原理如下: 1. 首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置。 2. 然后再从剩余未排序...

    吕鑫:最博大精深的C语言视频教程 第21天【第3堂课】链表排序与预定义语句(面试题)

    1、演示链表排序的算法流程; 2、讲解预定义语句的作用;

    常用的内部排序相关代码.rar

    《疯狂JAVA:突破程序员基本功的16课第12章》这本书可能会详细解释这些排序算法的实现细节、时间复杂度和空间复杂度分析,帮助读者深入理解每种排序方法的优缺点及其适用场景。 在实际编程中,开发者需要根据数据...

    Python语言程序设计课教程 中英双语课件 Python中的1ADS算法-6-排序算法 共118页.pptx

    **Python语言程序设计课教程——1ADS算法与排序算法** 排序算法是计算机科学中的核心概念,特别是在编程语言如Python中,它们对于数据处理和分析至关重要。1ADS算法(可能是指"1st Approach to Data Structures",...

    python基础教程至60课(基础)

    #### Python第3课:IDE - **集成开发环境**:介绍常用的Python IDE(如PyCharm、Visual Studio Code等)的安装与基本使用方法。 #### Python第4课:输入 - **用户输入**:教授如何利用`input()`函数获取用户输入...

    Acwing 算法基础课超详细笔记

    本资源摘要信息中,我们将对 Acwing 算法基础课进行详细笔记,涵盖快速排序、快速选择算法、归并排序、逆序对的数量和二分搜索等多个知识点。 快速排序 快速排序是一种基于分治的排序算法。其思想是选择一个元素...

    MIT课程introduction to algorithms音频第三课

    3. **排序与搜索算法**:作为算法的基础,排序(如冒泡排序、快速排序、归并排序等)和搜索(如线性搜索、二分搜索等)算法可能在本节课中被详细讲解。这些经典算法不仅在理论上有价值,也是实际编程中不可或缺的...

Global site tag (gtag.js) - Google Analytics