`
这些年
  • 浏览: 402324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

一.排序方法

  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代码

     

Java代码  收藏代码
  1. public static int[] selectSort(int[] data) {  
  2.     int temp = 0;  
  3.     int position = 0;  
  4.     int j = 0;  
  5.     for (int i = 0; i < data.length - 1; i++) {          //i当前位置  
  6.         position = i;                                   //position最小下标  
  7.         j = i + 1;                                        
  8.         for (; j < data.length; j++) {                   //j从此区间选取最小下标  
  9.             if (data[j] < data[position]) {  
  10.                 position = j;  
  11.             }  
  12.         }  
  13.         if (position != i) {      
  14.             temp = data[i];  
  15.             data[i] = data[position];  
  16.             data[position] = temp;  
  17.         }  
  18.     }  
  19.     return data;  
  20. }  

 

 

 四.时间复杂度和稳定性

  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] 。
分享到:
评论

相关推荐

    RF-KF-ZY-03-F05 投诉分类标准.zip

    总的来说,"RF-KF-ZY-03-F05 投诉分类标准.zip"文件中的内容可能涉及创建一个系统,该系统结合了人工智能、机器学习和数据挖掘技术,利用算法对客户投诉进行高效、准确的分类。这不仅可以提高客户服务的响应速度,还...

    快速排序 --- 非递归实现

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。

    易语言程序免安装版下载

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    算法_国家集训队论文集part2(可单独下载)

    2. **数据结构**:如树、图、堆、栈、队列等,以及它们在实际问题中的应用。 3. **算法设计与分析**:探讨如何设计新的高效算法,以及如何使用复杂度理论进行算法效率分析。 4. **竞赛策略**:针对信息竞赛,介绍...

    java个人通讯录系统

    3. **数据结构与算法**:系统的核心是存储和操作联系人数据,这可能涉及到链表、数组、集合(如ArrayList或LinkedList)或者自定义的数据结构。可能还用到了排序算法(如快速排序、冒泡排序)来组织联系人列表。 4....

    第五届蓝桥杯Java本科A组试题.

    3. **数据结构**:数组、链表、栈、队列、树、图等数据结构的实现,以及相关的算法操作,如查找、排序等。 4. **算法分析**:理解时间复杂度和空间复杂度,掌握常见排序算法(如冒泡排序、快速排序、归并排序)和...

    C程序设计(第三版)部分作业

    7. `changshi.c` - "changshi"可能指"常事"或"常见问题",这可能是一些常见编程任务的实现,比如排序算法(冒泡、选择、快速等)、搜索算法(线性、二分)或者是错误处理。 8. `smg.c` - "smg"没有明显的C语言关联...

    Python numpy

    首先,我们要理解numpy的核心数据结构——`ndarray`(n-dimensional array)。与Python内置的列表不同,`ndarray`是一个同构的数据集合,即数组中的所有元素都是相同类型的,例如整型、浮点型或复数。这种结构允许...

    手把手教你一套R语言数据分析+建模 代码+注释+数据

    你可以使用`read.csv`函数加载数据到R环境中,然后使用`head()`和`str()`函数查看数据的前几行和结构。`summary()`函数则可以快速获取数据的基本统计信息。 接下来,你需要对数据进行清洗,处理缺失值(使用`is.na...

    泡泡弄游戏源码、值得一看很经典

    5. 算法:学习如何实现泡泡的匹配和消除算法,可能涉及到搜索、排序等算法。 6. 用户交互:分析玩家输入如何转化为游戏行为,例如发射泡泡的方向和力度控制。 7. 音效和动画:如果源码包含这部分,可以学习如何集成...

    二叉树实例

    二叉树不仅在数据结构和算法中占有重要地位,也是许多高级数据结构如AVL树、红黑树的基础,它们在数据库索引、文件系统、编译器符号表管理等领域有着广泛的应用。 总之,二叉树是计算机科学中的重要概念,熟练掌握...

    微机汇编作业答案.zip

    排序算法如冒泡排序、选择排序或快速排序可以被实现为汇编子程序,这需要理解和运用循环、分支结构以及栈操作。 最后,“统计个数”可能指的是统计数组元素的数量或者特定字符或字符串出现的次数。这需要熟练使用...

    单片机实验报告

    数据排序实验的目的是让学生掌握排序算法的设计,特别是通过减法指令进行操作。实验中,学生需要编写程序实现对输入的六个数进行升序排列,并在数码管上显示结果。这个过程涉及到程序的编译、连接、调试和错误排查,...

    JAVA核心知识点整理.rar

    在算法方面,Java可以用来实现各种经典算法,如排序(冒泡排序、插入排序、选择排序、快速排序、归并排序等)、查找(线性查找、二分查找)、图算法(深度优先搜索、广度优先搜索)、树结构(二叉树、平衡二叉树、...

    普通树实例代码

    在计算机科学领域,树是一种非常基础且重要的数据结构,它模拟了自然界中的层次关系。"普通树"通常指的是非特定类型的树,例如二叉树、N叉树等,不涉及特殊的性质或约束。本实例代码可能包含不同类型的树实现,如...

    C#飞机大战案例.rar

    6. **数据结构和算法(Data Structures and Algorithms)**:游戏中的数据管理,如子弹队列、敌人列表,会用到数组、列表等数据结构。同时,碰撞检测、敌机生成等逻辑则涉及到搜索、排序等算法。 7. **资源管理...

Global site tag (gtag.js) - Google Analytics