数据结构与算法基础 模块六

简单选择排序:

设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(R,R[i+1],…,R[n]中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。

代码如下:

public  void SimpleSelect()

{

int[] inputIntArray = new int[8] { 8, 4, 7, 5, 2, 3, 6, 1 };

for (int i = 1; i < inputIntArray.Length; i++)

{

int t = i - 1;

for (int j = i; j < inputIntArray.Length; j++)

{

if (inputIntArray[t] > inputIntArray[j])

{

t = j;

}

}

int temp = inputIntArray[t];

inputIntArray[t] = inputIntArray[i - 1];

inputIntArray[i - 1] = temp;

PrintSortedResult(inputIntArray, i);

}

}

public  void PrintSortedResult(int[] inputIntArray, int num)

{

StringBuilder sb = new StringBuilder();

for (int i = 0; i < inputIntArray.Length; i++)

{

if (i == 0)

{

sb.Append(inputIntArray[i].ToString());

}

else

{

sb.Append("," + inputIntArray[i].ToString());

}

}

Console.WriteLine("第" + num + "次排序的结果:  " + sb.ToString() + "");

}

冒泡排序

1:原理

以此比较相邻的两个元素,每次比较完毕最大的一个字跑到本轮的末尾。 
目的:按从小到大排序。 
方法: 
假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 
第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。 
72和54比较的结果就是,54在前,72在后; 
然后72和59比较的结果,59在前,72在后; 
以此类推,第一轮比较之后的结果是:54, 59, 30, 31, 72, 2, 77, 78, 72, 82 
经过第一轮比较,最大的元素跑到了最后一个,所以第二轮比较,最后一个元素不需要进行比较了。  
第二轮还是从索引0和1开始比较,只是不许要比较最后一个了,算法还是一样的。第三轮、第四轮以此类推。 
排序之后的结果:2, 30, 31, 54, 59, 72, 72, 77, 78, 82

2:代码

static List<int> list = new List<int>() { 72, 54, 59, 30, 31, 78, 2, 77, 82, 72 };

static void Main(string[] args)

{

Bubble();

PrintList();

}

static void Bubble()

{

int temp = 0;

for (int i = list.Count; i > 0; i--)

{

for (int j = 0; j < i - 1; j++)

{

if (list[j] > list[j + 1])

{

temp = list[j];

list[j] = list[j + 1];

list[j + 1] = temp;

}

}

PrintList();

}

}

private static void PrintList()

{

foreach (var item in list)

{

Console.Write(string.Format("{0} ", item));

}

Console.WriteLine();

}

原文地址:https://www.cnblogs.com/bibabo/p/9368124.html

时间: 2024-08-30 07:44:17

数据结构与算法基础 模块六的相关文章

数据结构与算法基础 模块一

在软件水平考试中,数据结构与算法基础的相关内容是考试上午进行的,那么,接下来将对有关数据结构的内容进行整理和归纳,以便于在整个的软考准备阶段能够更加清楚和有效率的进行学习和回忆. 以下均为个人针对于数据结构的相关内容的整理,后期根据深入的程度不断地完善和改进,如果有什么错误或者不足,希望可以提出来,一起进步. 常用的数据结构:      数组(静态数组,动态数组),线性表,链表(单向链表,双向链表,循环链表),队列,栈,树(平衡数,二叉树,查找树,堆,线索树),图等的定义,存储和操作,HASH(

数据结构与算法基础 模块四

今天主要是有关于图的分享. 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 在图中需要注意的是: (1)线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex). (2)线性表可以没有元素,称为空表:树中可以没有节点,称为空树:但是,在图中不允许没有顶点(有穷非空性). (3)线性表中的各元素是线性关系,树中的各元素是层次关系,而图中各顶点的关

数据结构与算法基础 模块七

二叉树的补充: 线索二叉树: 1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继.但在二叉链表存储结构中,只能找到一个节点的左.右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息.这些信息只有在遍历的动态过程中才能得到,因此,引入线索二叉树来保存这些从动态过程中得到的信息. 2.建立线索二叉树 为了保存节点在任一序列中的前驱和后继信息,可以考虑在每一个节点中增加两个指针域存放遍历

数据结构与算法基础学习笔记

*********************************************            ---算法与数据机结构--- 数据结构:由于计算机技术的发展,需要处理的对象不再是纯粹的数值,还有像字符,表,图像等具有一定结构的数据,需要用好的算法来处理这些数据. 我们把现实中大量而又复杂的问题以特定的数据类型的特定的存储结构保存到主存储器中,以及在此基础上为实现某个功能而执行的相应操作(查找排序),这个相应的操作也叫算法. 数据结构 = 个体 +个体的关系算法 =对存储数据的操

数据结构与算法基础

数据结构与算法基础: 顺序存储结构 链式存储结构 什么是树结构?为什么使用树结构?树的基本概念 二叉树: 任何一个节点的子节点数量不超过2 二叉树的子节点分左节点和右节点 满二叉树:所有的叶子节点都在最后一层,而且节点总数为2的n次方-1[n是树的高度]完全二叉树:所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二节的叶子节点在右边连续 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言

数据结构和算法之排序六:希尔排序

经过前面五篇排序方法的介绍,我们了解到了递归思想以及分而治之的归并和快速排序,当然也涉及到了比较简单易懂的数据值传递冒泡,选择,以及插入排序.可以说每一种排序方式都各有千秋,都适合在不同的环境下进行使用,但是我们有时会不会思考一个问题,那就是我们在学习插入排序的时候的主题思想是将每一个数据取出来,然后和后边的前边的数据逐一进行比较,那么,我们是不是要进行N-1次的循环,或者说我们是不是要进行大约N的平方次比较,我们知道,在进行值的交换和比较是非常消耗时间的,那么是不是违背了我们算法的发展.有没有

数据结构与算法基础之概述、指针与内存

数据结构的定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序而执行的相应操作,这个操作也叫算法) 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 衡量算法的标准: 时间复杂度:大概程序要执行的次数,而非执行的时间 空间复杂度:算法执行过程中大概所占用的最大内存 难易程度 健壮性 内存的基本概念: 1.内存是用来存储数据的设备.它的存储速度介于寄存器和硬盘之

数据结构之算法基础

算法:  大O表示法: 代码(求出数组中出现次数最多的数字): 原文地址:https://www.cnblogs.com/souhaite/p/11030245.html

数据结构和算法基础之单链表

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class Node<T> { public T Data; public Node<T> Next; public Node() { Data = default(T); N