数据结构-排序: 选择排序(直接选择排序法)
直接选择排序(Straight Selection Sort)
直接选择排序的基本思想
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
①初始状态:无序区为R[1..n],有序区为空。
②第1趟排序
在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
③第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录
R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序
区。
这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
using System;
using System.Collections.Generic;
using System.Text;
namespace ExSelectionSorter
{
class SelectionSorter
{
private int min;
public void Sort(int[] arr)
{
for (int i = 0; i < arr.Length - 1; ++i)
{
min = i;
for (int j = i + 1; j < arr.Length; ++j)
{
if (arr[j] < arr[min])
min = j;
}
int t = arr[min];
arr[min] = arr[i];
arr[i] = t;
}
}
static void Main(string[] args)
{
int[] array = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
SelectionSorter s = new SelectionSorter();
s.Sort(array);
foreach (int m in array)
Console.WriteLine("{0}", m);
}
}
}
分享到:
相关推荐
本实验主要包括四个核心部分:直接插入排序、希尔排序、选择排序和快速排序。要求学生能够将这些排序算法整合到一个程序中,并能够灵活地根据需要调用不同的排序方法。此外,实验还鼓励学生尝试创新思路和开发新的...
- 选择合适的数据结构:根据问题特点选择适合的数据结构,如用栈解决递归问题,用图处理关系网络。 - 设计算法:设计或选择合适的算法,如用贪心法解决背包问题,用深度优先搜索遍历图。 - 时间复杂度和空间...
- 数据结构选择:根据实际需求选择合适的数据结构,如频繁插入删除时选择LinkedList而非ArrayList。 - 算法优化:分析时间复杂度和空间复杂度,选择高效算法,避免不必要的计算和存储开销。 - 并发处理:在多线程...
- 定义:利用堆这种数据结构所设计的一种排序算法。 - 时间复杂度:O(n log n)。 - **归并排序** - 定义:把长度为n的输入序列分成两个长度为n/2的子序列,对这两个子序列分别采用归并排序,然后将两个排序好的子...
本文将深入探讨标题"数据结构--内部排序"中涉及的几种主要排序算法,并对描述中提及的插入排序、Shell排序、冒泡排序、快速排序、简单选择排序以及堆排序进行详细解析。 1. 插入排序:插入排序是一种简单的排序算法...
- 应用场景:展示数据结构在实际编程中的应用场景,比如排序算法、查找算法等。 #### 2. 基本数据结构 - 数组:介绍数组的基本概念、存储方式及优缺点。 - 链表:讲解链表的定义、类型(单向链表、双向链表、循环...
在编程和算法设计中,理解并熟练运用数据结构至关重要,因为正确的数据结构选择直接影响程序的性能和可维护性。以下是关于数据结构的一些关键知识点: 1. 基本概念: - 数据:数据是信息的最小单位,如数字、字符...
在本压缩包“用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录_Java_下载.zip”中,包含的资源主要是关于Java编程语言实现的数据结构、排序算法、经典算法以及LeetCode刷题的代码实现。这些是计算机...
在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它们用于对一组数据进行排列,使其按照特定的顺序呈现。本资源包含三个经典的排序算法的源代码:插入排序、选择排序和冒泡排序,这些都是初级到中级...
在本课程设计中,我们将深入探讨“综合排序程序”这一主题,主要使用C语言作为编程工具,结合数据结构的基础知识来实现。综合排序是计算机科学中的一个重要概念,它涉及到多种排序算法的综合应用,旨在提高排序效率...
数据结构是组织和存储数据的方式,它直接影响到算法的效率和程序的性能。本书涵盖了一系列经典的数据结构,如: - 数组:基础的数据结构,提供了固定大小的元素集合,支持直接访问。 - 链表:动态数据结构,每个...
排序算法则是数据结构中的重要部分,它们用于对一组数据进行有序排列。在这个实验中,我们将关注六种不同的排序算法:选择排序、冒泡排序、插入排序、基数排序以及快速排序和归并排序。下面是对这些排序算法的详细...
### 数据结构线性表快速排序知识点解析 #### 一、数据结构基础概念 - **数据结构**:数据结构是计算机科学中的一个核心概念,它主要研究数据的逻辑结构与存储结构,以及基于这些结构的数据操作方法。良好的数据...
本主题聚焦于三种常见的排序算法:选择法排序、冒泡法排序和合并法排序,这些方法在VB6.0编程环境中都有实现的源代码。 1. **选择法排序(Selection Sort)**: - 基本思想:在未排序序列中找到最小(或最大)元素...
在IT领域,排序算法是数据结构与算法中的基础部分,对于高效处理大量数据至关重要。本文主要探讨了排序算法中的几种经典方法,包括直接插入排序、折半插入排序以及希尔排序。 首先,排序定义是为了将一个数据序列...
- 选择类排序法:简单选择排序、堆排序。 #### 二、程序设计基础 1. **源程序文档化**: - 注释的重要性:提高代码的可读性和维护性。 - 分类:序言性注释(文件头、模块头等)、功能性注释(代码行间解释)。 ...
在计算机科学和信息技术领域,排序算法是数据结构中必不可少的部分,广泛应用于数据库管理、文件系统、数据分析等多个场景。 1. **排序的概念** - 排序,即对一组记录或数据元素按照某个关键字进行升序或降序的...
8. 稳定排序算法:直接插入排序是稳定的,而快速排序、希尔排序和堆排序都是不稳定的。 9. 某趟结束后不一定选出一个元素放到其最终位置:归并排序在某些情况下可能不立即把元素放到最终位置,因为它涉及分治策略。...
// 选择排序法 public static void selectSort(Integer[] integers) { for (int i = 0; i < integers.length - 1; i++) { int minIndex = i; for (int j = i + 1; j ; j++) { if (integers[j] [minIndex]) { ...
快速排序的基本步骤包括选择一个基准元素、划分数组以及递归排序子数组。 1. **选择基准元素**:首先,我们需要从待排序的数组中选取一个元素作为基准(pivot)。这个元素的位置会影响最终的排序效率。通常选择中间...