`
zy19982004
  • 浏览: 661894 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

数据结构与算法学习二:直接选择排序

 
阅读更多

一.排序方法

  1. 被排列的数组data[0...n],选定当前位置i=0作为最小值下标position;在data[i+1...n]区间每个元素与data[position]比较,记录新position,最后交换data[i]和data[position]。这样最小的元素就到了当前位置了。
  2. 当前位置i+1,重复1...

 

二.动画演示 

      http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/zhijiexuanze.htm

 

三.Java代码

     

	public static int[] selectSort(int[] data) {
		int temp = 0;
		int position = 0;
		int j = 0;
		for (int i = 0; i < data.length - 1; i++) {			//i当前位置
			position = i;									//position最小下标
			j = i + 1;										
			for (; j < data.length; j++) {					//j从此区间选取最小下标
				if (data[j] < data[position]) {
					position = j;
				}
			}
			if (position != i) {	
				temp = data[i];
				data[i] = data[position];
				data[position] = temp;
			}
		}
		return data;
	}

 

 

 四.时间复杂度和稳定性

  1.  最好时间复杂度
    1. 若文件的初始状态是正序的,所需的关键字比较次数C和记录移动次数M。
    2. Cmin=n(n-1)/2=0(n2)
    3. Mmin=0
    4. 直接选择排序最好的时间复杂度为O(n2)
  2. 最坏时间复杂度
    1. 若初始文件是反序的,所需的关键字比较次数C和记录移动次数M。
    2. Cmax=n(n-1)/2=O(n2)
    3. Mmax=3(n-1)=O(n)
    4. 直接选择排序的最坏时间复杂度为O(n2)
  3. 平均时间复杂度
    1. O(n2)
  4. 直接选择排序是就地排序,它是不稳定的。反例[2,2,1] 。
1
1
分享到:
评论
1 楼 这些年 2014-06-03  
不错,不错,不错

相关推荐

    数据结构学习笔记排序算法:基数排序

    数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...

    数据结构算法与应用-C++语言描述_Sahni著

    《数据结构算法与应用-C++语言描述》这本书,由Sahni著,旨在帮助读者深入理解这些核心概念,并通过C++实践来提升技能。 本书可能涵盖了以下几个主要的知识点: 1. **基础数据结构**:包括数组、链表、栈、队列、...

    java数据结构与算法.pdf

    在编程领域,数据结构与算法是核心组成部分,它们直接影响到程序的效率和性能。Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点...

    数据结构、算法与应用:C++语言描述

    3. **排序与查找算法**:排序算法(如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序)和查找算法(如线性查找、二分查找、哈希查找)是算法的基础。书中会详细分析每种算法的时间复杂度和空间复杂度,...

    数据结构与算法学习资料

    总结来说,"数据结构与算法学习资料"是计算机科学的核心组成部分,涵盖了各种数据组织方式和解决问题的方法。通过深入学习,我们可以更好地理解和解决实际问题,提升编程技能,为未来的软件开发和系统设计打下坚实...

    数据结构与算法分析:C语言描述 源码+answer_高清版

    《数据结构与算法分析:C语言描述》曾被评为20世纪顶尖的30部计算机著作之一,作者在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评,已被世界500余所大学选作教材。...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    数据结构与算法学习网站

    数据结构与算法是计算机科学的基础,对于任何想要深入理解编程和优化程序性能的人来说,都是必不可少的知识领域。数据结构是组织和存储数据的方式,而算法则是解决问题的步骤或指令集。以下是一些关于数据结构和算法...

    JS数据结构与算法.pdf

    JS 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...

    恋上数据结构与算法第二季课件pdf

    在“恋上数据结构与算法第二季”的课件中,你将通过实际案例学习和练习这些算法,加深对它们的理解,提升编程技能。这份pdf文档将是你探索数据结构与算法世界的宝贵资源,无论你是初学者还是经验丰富的开发者,都能...

    Python数据结构与算法分析(第2版)1

    【Python数据结构与算法分析(第2版)】是一本专为Python程序员设计的书籍,旨在帮助读者深入了解数据结构和算法在Python环境中的应用。作者布拉德利·米勒和戴维·拉努姆以其丰富的实战经验,清晰地阐述了如何高效...

    数据结构与算法分析–C++描述(第3版,WEISS著,含习题答案)

    《数据结构与算法分析——C++描述》是Mark Allen Weiss教授撰写的一本经典教材,针对计算机科学中的核心主题——数据结构和算法进行了深入浅出的阐述。这本书的第三版不仅涵盖了基本的数据结构如数组、链表、栈、...

    数据结构与算法之排序

    在IT领域,数据结构与算法是基础且至关重要的部分,特别是排序算法,它们在软件开发中扮演着核心角色。本文将深入探讨“数据结构与算法之排序”,重点关注内部排序和外部排序。 首先,我们理解一下数据结构。数据...

    数据结构与算法分析:C语言描述(高清扫描第二版)

    书中讲解了排序算法(如冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序)和搜索算法(如线性搜索、二分搜索、深度优先搜索和广度优先搜索),这些都是解决问题的常见工具。 特别值得一提的是,本书采用...

    数据结构与算法学习

    数据结构与算法是计算机科学的基础,对于任何编程...总的来说,数据结构与算法是计算机科学的基石,通过系统学习和实践,你可以提高编程技能,为成为优秀的IT专业人士打下坚实的基础。记住,持续学习和不断实践是关键。

    数据结构和算法的学习:一些常见的算法包括排序(如冒泡排序、快速排序等)、搜索(如二分搜索、深度优先搜索等)、图算法

    一些常见的算法包括排序(如冒泡排序、快速排序等)、搜索(如二分搜索、深度优先搜索等)、图算法(如Dijkstra算法、Prim算法等)等。在生产环境中,数据结构和算法的应用非常广泛。例如,你可能需要使用特定的数据...

    数据结构与算法 课后答案

    以下是对标题“数据结构与算法 课后答案”以及描述“数据结构与算法(C++版)参考答案、 数据结构、算法”的详细解释和相关知识点的阐述。 首先,我们来谈谈数据结构。数据结构是组织、存储和管理数据的方式,它...

    数据结构与算法java—作者:周鹏

    《数据结构与算法Java》是由周鹏编著的一本深入探讨数据结构与算法的书籍,主要面向Java开发者。这本书详细地介绍了数据结构和算法的基础知识,对于提升编程能力,优化程序设计有着重要的指导意义。 首先,我们要...

Global site tag (gtag.js) - Google Analytics