C#之选择排序
2024-08-29 11:22:37
算法描述
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();
}
}
}
最新文章
- sys.dm_os_waiting_tasks 引发的疑问(中)
- 苹果全新 Mac OS X 系统开放下载
- PCM-脉码调制
- Cookie的使用与实现记住用户名案例
- MVC两个必懂核心
- ESXI
- 人生规划和GTD——“知”、“得”与“合”
- (CodeForces 558C) CodeForces 558C
- 现在再开发一个CMS系统还有市场吗?
- Peter&;#39;s Hobby
- 快看Sample代码,速学Swift语言(1)-语法速览
- EBS财务模块表结构
- View控件跟随鼠标移动
- Python并发编程二(多线程、协程、IO模型)
- 关于各种算法以及好的blog的整理(持续更新)
- Hopfield神经网络和TSP问题
- php获取ios或android通过文件头(header)传过来的坐标,通过百度接口获取具体城市和地址,并存入到session中。
- Qt Creator 下启动vim模式后,运行快捷键Ctrl+R失效解决方案
- 【bzoj1594-猜数游戏】线段树
- 几何画板给word绘制图形的方法
热门文章
- Android requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决方法
- Linux 配置 nginx + php
- ThinkPHP---thinkphp拓展之空操作
- (转)MySQL中的索引详讲
- selenium爬虫设置headers,代理IP等方法
- HDU - 2050 - 折线分割平面(数学 + dp)
- C/C++学习)22.QTcpServer、QTcpSocket、QUdpSocket使用
- [Algorithm] 8. Rotate String
- cookie的原理
- Jmeter使用笔记之断言