`

【转】第三课 选择排序

阅读更多
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--

    我的上课课件,从最基本的嵌套循环开始(可看专栏)

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

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

    Dreamweaver教程

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

    数据结构教程 编程算法基础

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

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

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

    数据结构教程

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

    突破程序员基本功的16课.part2

    第3课 常见Java集合的实现细节 3.1 Set和Map 3.1.1 Set和Map的关系 3.1.2 HashMap和HashSet 3.1.3 TreeMap和TreeSet 3.2 Map和List 3.2.1 Map的values()方法 3.2.2 Map和List的关系 3.3 ArrayList和...

    大数据算法导论视频教程

    第3课 基本数据结构及应用,栈,队列,链表,哈希函数和哈希表 第4课 二叉树,B树,红黑树等各种树结构及其应用 第5课 面试题与ACM题选讲(1) 第6课 面试题与ACM题选讲(2) 第7课 矩阵计算问题,超巨型矩阵与稀疏...

    MIT_Introduction to Algorithms 算法导论视频字幕

    4 第三课 各个击破法: Strassen 算法,费氏数列,多项式乘法。 阅读:28 章第 2 节,30章第1节 5 演示课 2 递归公式,松散性 阅读:Akra-Bazzi 的讲义 6 第四课 快速排序法,随机化算法 阅读:5 章 1 到 3 节,7 ...

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

    Python语言程序设计课教程 Python中的1ADS算法 该PPT为其中一个章节,完整目录请看下方 【目录】 1-第一步-入门 共170页 2-条件和循环结构 共138页 3-子程序 共132页 4-连续数据结构 共146页 5-循环·范例“分组...

    todai-s3-java:东京大学系统创造系的编程应用问题

    第3课 递归 第4课 枢轴选择高斯消去 第5课 堆栈和队列 第6课 多项式插值 第7课 双向链表 第8课 最小二乘 第9课 二叉搜索树 第10课 数值微分与数值微分 第11课 回溯法 第12课 常微分方程 第13课 图形 执照 我添加的...

    计算机二级Office专题课视频.zip

    04 word专题第三次作业 1.表格考点汇总.mp4 2.表格典型真题.mp4 3.图表考点汇总.mp4 4.图表典型真题.mp4 5.超链接考点精讲-2022-01.mp4 05. word专题第四次作业 1.文本考点汇总.mp4 2.一节课学会页眉页脚 3.首页...

    算法数据结构学习视频教程,算法和数据结构的基础概念、进阶技巧以及特定算法的应用和实现

    第3节 异或运算相关面试题.mp4 第4节 一些基础的数据结构.mp4 第5节 归并排序及其相关面试题.mp4 第6节 归并排序附加题、随机快速排序.mp4 第7节 堆和堆排序.mp4 第8节 加强堆.mp4 第9节 前缀树、不基于比较的排序、...

    人工智能-深度学习-机器学习的范畴大小排序.docx

    大学第一次接触《人工智能导论》这门课,通过老师的讲解,我对人工智能有了一些简单的感性认识,我觉得人工智能是一门具有挑战性的科学,想要学好这门课程必须要懂得计算机知识以及基本的算法认识。人工智能包括了...

    Java算法深度学习实践视频教程含案例源码

    第3课概率模拟算法 第4课排序算法可视化 第5课走迷宫 第6课随机迷宫生成 第7课自己做一个扫雷游戏 第8课益智游戏自动生成解- Move the Box 第9课分形图的绘制:计算机生成艺术 第10课看得见的算法,下季再见!Java...

    codility_training:Python中的Codility训练作业解决方案

    第3课-时间复杂度 第4课-计数元素 第5课-前缀求和 第6课-排序 清楚的 MaxProductOfThree 三角形 磁盘交叉点数 第7课-堆栈和队列 括号 鱼 石墙 套料 第8课-领导者 EquiLeader 统治者 第9课-最大切片问题 最大切片...

    基于命令行的学生成绩管理系统(重庆大学)

    第三步,获得平时成绩,获得期中成绩,获得实验成绩,获得期末成绩,最后计算总成绩。 4、能够显示一个教学班级的学生,可以根据学号排序,可以根据成绩排序。可以通过名字查询成绩,可以按照各科成绩和总成绩进行...

    人工智能第二课——-python列表作业

    文章目录第1关:列表元素的增删改:客人名单的变化解题代码是:第2关:列表元素的排序:给客人排序题解:第3关:数值列表:用数字说话题解:第4关:列表切片:你的菜单和我的菜单题解 第1关:列表元素的增删改:客人...

    word2000基础教程.

    保存文档 多文档切换 关闭文档和退出Word 文档的编辑 二、补充部分 新建文档 打开文档 打开和保存对话框 保存文档 自动保存和恢复 改变默认路径 多文档切换 关闭和退出 界面的介绍 第三课 文档的编辑 1....

Global site tag (gtag.js) - Google Analytics