C#之选择排序
算法描述
1.假定未排序序列中第一位为数组最小值,通过与后面的数值进行比较,找到未排序序列中最小值,与未排序序列第一位交换位置;
2.重复步骤一,对剩余未排序序列进行比较找出最小值,与未排序序列中第一位数值交换位置,直到数组所有数值排序完成;

代码实现
/*
例如:对数组:{ 2,7,6,3,1 }进行比较 第一轮:{ 1,7,6,3,2 } :共比较四次
第二轮:{ 1,2,6,3,7 } :共比较三次
第三轮:{ 1,2,3,6,7 } :共比较二次
第四轮:{ 1,2,3,6,7 } :共比较一次
*/
public void Select(int[] arr)
{
int temp;
int number;
int numIndex; bool flag; for (int i = ; i < arr.Length -; i++)
{
flag = true;
number = arr[i];
numIndex = i; for (int j = i + ; j < arr.Length; j++)
{
if (number > arr[j])
{
number = arr[j];
numIndex = j;
flag = false;
}
} temp = arr[i];
arr[i] = arr[numIndex];
arr[numIndex] = temp; if (flag == true)
{
break;
} Console.Write("选择排序:");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.WriteLine(); }
}
完整代码
using System; namespace SelectSortApplication
{
class Program
{
static void Main(string[] args)
{
var setArray = new SetArray();
var selectSort = new SelectSort(); int[] arr = setArray.GetArray();
selectSort.Select(arr); Console.ReadLine();
}
} class SetArray
{
public int[] GetArray()
{
int length;
int[] arr; Console.WriteLine("请输入数组长度:");
length = Convert.ToInt32(Console.ReadLine()); arr = new int[length]; for (int i = ; i <= length -; i++)
{
Console.Write("请输入数组第{0}位数值:", i);
arr[i] = Convert.ToInt32(Console.ReadLine());
} Console.Clear(); Console.Write("arr[] = {");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.Write("}\n");
return arr;
}
} class SelectSort
{
public void Select(int[] arr)
{
int temp;
int number;
int numIndex; bool flag; for (int i = ; i < arr.Length -; i++)
{
flag = true;
number = arr[i];
numIndex = i; for (int j = i + ; j < arr.Length; j++)
{
if (number > arr[j])
{
number = arr[j];
numIndex = j;
flag = false;
}
} temp = arr[i];
arr[i] = arr[numIndex];
arr[numIndex] = temp; if (flag == true)
{
break;
}
}
Console.Write("选择排序:");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
}
}
C#之选择排序的更多相关文章
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- Html5 简单选择排序演示
简单选择排序,是选择排序算法的一种.基本思想:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止.由于在每次循环中,会对数值相等的元素改变位置,所以属于非稳定 ...
- 排序算法总结------选择排序 ---javascript描述
每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...
- JavaScript算法(冒泡排序、选择排序与插入排序)
冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...
- 基本排序算法——选择排序java实现
选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...
- java基础算法之选择排序
选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...
- CPrimerPlus第十一章中的“选择排序算法”学习
C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...
- SelectionSort,选择排序
/**算法:选择排序1,从当前未排序的正数中找一个最小的整数,将它放在已排序的整数列表的最后2.要点:选择排序选最小的,往左边选*/ #include <stdio.h>void Sele ...
- [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
冒泡排序: function bubbleSort($array){ $len=count($array); //该层循环控制 需要冒泡的轮数 for($i=1;$i<$len;$i++){ / ...
随机推荐
- ARP劫持处理指令集
第一组(据传xp有效,未实验) arp -a arp -d arp -s IP地址 MAC地址 第二组(windows2008R2有效,已实验) netsh i i show in (记住其中本地连接 ...
- mongo 3.4分片集群系列之二:搭建分片集群--哈希分片
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Ubuntu安装配置Charles,抓取http网络请求包
http://blog.csdn.net/lylddinghffw/article/details/75322262
- HDU_1143_tri tiling
Tri Tiling Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 梦想MxWeb3D,三维CAD协同设计平台 2019.04.09更新
SDK开发包下载地址: http://www.mxdraw.com/ndetail_10140.html 在线演示网址: http://www.mxdraw.com:3000/ 1. 增加上传dwg ...
- 基础:VS快捷键
VS.net中快捷键收缩和展开代码段 i. Ctrl-M-O 折叠所有方法 ii. Ctrl-M-P 展开所有方法并停止大纲显示(不可以再折叠了) iii. Ctrl-M-M 折叠或展开当 ...
- BZOJ 2223: [Coci 2009]PATULJCI 主席树
Code: #include<bits/stdc++.h> #define maxn 300001 #define mid ((l+r)>>1) using namespace ...
- js 动态加载select触发事件
动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) { $.ajax({ type: " ...
- java.net.MalformedURLException: no protocol: www.baidu.com
URL url = new URL("www.baidu.com");改为 URL url = new URL("http://www.baidu.com");
- 在MONO Design中使用Flex3D
在项目开发组的努力下,HTML5 3D 的开发包变得越来越优秀,越来越健壮:基于HTML5 3D技术的MONO Design建模平台功能也变得越来越强大和完善,这个方便了很多使用我们HTML5 3D的 ...