前言:
近期很多时间用来学习算法上了,之前每一次学习算法都是纸上谈兵,打嘴炮,看看,说说,以为思路搞清楚了就万事大吉了,不去理会大家说的一定要去自己做,动手就想着我动手了啊,我明白了啊。其实都是给自己找借口偷懒。这次的学习过程非常的棒,从自我感觉良好——写不出代码——搞不清思路——demo实现。虽然还不能都搞清楚,但是这次的进步是非常大的,真的去动手实践,理论加实际运用,在做的过程中去收获。当然学习的过程非常重要,那么颗粒归仓是必不可少的一步了。
选择排序:
选择排序的基本思想:每一次在n-i+1个记录中选取最小的记录作为作为有序序列的第i个记录。
选择排序有直接选择排序和堆排序。本次介绍直接选择排序。
代码:
namespace 选择排序
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[20]; //定义一个大小为20的数组。
System.Random random = new Random();
for (int i = 0; i < arr.Length ; i++) //随机产生小于200 的数并传给数组arr【】。
{
int result = random.Next(200) ;
arr[i] = result;
}
selectsort s = new selectsort();
s.sort(arr);
foreach (var m in arr) //遍历
{
Console.WriteLine("{0}", m);
}
Console.ReadKey();
}
}
}
namespace 选择排序
{
class selectsort
{
#region 方法一 使用下标
public void sort(int[] arr)
{
for (int i = 0; i < arr.Length-1 ; i++)
{
int min = i;
for (int j = i+1; j < arr.Length ; j++)
{
if (arr[min]>arr[j])
{
min = j;
}
}
int t = arr[min];
arr[min] = arr[i];
arr[i] = t;
}
#endregion
#region 方法二 直接交换
public void sort(int[] arr)
{
int temp=0;
for (int i = 0; i < arr.Length -1; i++)
{
for (int j = i+1; j < arr.Length ; j++)
{
if (arr[j]<arr[i])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
#endregion
}
}
未完~~