排序算法
Posted Nemo_XP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。
经典的排序算法
冒泡排序
static void Main(string[] args)
{
int tempNum = 0;
int[] nums = { 1, 2, 3, 4, 5 };
// 冒泡排序,两两比较,左边小于右边交换位置,否则不变(把最小的放在最后)
// 21345;23145;23415;23451; 第一轮:第一个和第二个,第二个和第三个,第三个和第四个,第四个第五个
// 32451;34251;34521; 第二轮:第一个和第二个,第二个和第三个,第三个和第四个
// 43521;45321; 第三轮:第一个和第二个,第二个和第三个
// 54321 第四轮:第一个和第二个
// (共count-1轮,每轮都比上一轮少一次)
for (int i = 0; i < nums.Length - 1; i++)//如上例,最后一轮不用比已经是正确的了
{
for (int j = 0; j < nums.Length - 1 - i; j++)// 每轮都从第一个数字开始
{
if (nums[j] < nums[j + 1])
{
tempNum = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = tempNum;
}
}
}
Console.ReadKey();
}
选择排序
static void Main(string[] args)
{
int tempNum = 0;
int[] nums = { 1, 2, 3, 4, 5 };
// 选择排序,永远拿第一个依次和之后的每一个比较,左边小于右边交换位置,否则不变(把最大的甩在了最左边)
// 21345;31245;41235;51234; 第一轮:第一个和第二个,第一个和第三个,第一个和第四个,第一个第五个
// 52134;53124;54123; 第二轮:第二个和第三个,第二个和第四个,第二个和第五个
// 54213;54312; 第三轮:第三个和第四个,第三个和第五个
// 54321 第四轮:第四个和第五个
// (共count-1轮,每轮都比上一轮少一次)
for (int i = 0; i < nums.Length; i++)
{
for (int j = i + 1; j < nums.Length; j++)// 每轮开始的起始数字都会+1
{
if (nums[i] < nums[j])
{
tempNum = nums[i];
nums[i] = nums[j];
nums[j] = tempNum;
}
}
}
Console.ReadKey();
}
以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章