`

第三课 选择排序

阅读更多
引用
笔记--选择排序

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、讲解预定义语句的作用;

    数据结构教程

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

    大数据算法导论视频教程

    第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 ...

    突破程序员基本功的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和...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    学生考勤管理程序报告

    考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生、姓名、缺课类型(迟到、早退、请假及旷课)。设计一考勤管理程序,提供以下功能: 1.录入学生的缺课记录; 2.修改某个学生的缺课...

    algorithm-swift:Udacity课程以Swift编写的算法-研究生算法简介

    扩展的欧几里得算法第2课-欧拉定理RSA算法与实现原始性测试第3课-哈希图的实现布隆过滤器的实现第1课-合并排序使用分而治之的乘法第2课-在未排序的数组中找到最小的Kth 在未排序的数组中找到最大的Kth 快速排序第3课-...

    SYPRO示例项目源码和EasyUI入门视频教程

    第07课(讲解datagrid的基本应用,后台交互,排序功能) 第08课(讲解datagrid的查询,toolbar的多种创建方式,清空查询条件,扩展一个form序列化object的方法,load、reload方法的使用和区别,datetimebox初始化时需要...

Global site tag (gtag.js) - Google Analytics