选择排序,每一次外循环,在无序数中选择出一个最小,并放在无序数中的第一位
public static void SelectSort(int[] list) //选择排序(升序)
{
int min;//记录最小值索引
int N = list.Length; //获得数组list的长度N
for (int i = 0; i < N - 1; i++) //外循环进行N-1轮比较
{
min = i;//假设当前索引就是最小值索引
for (int j = i; j < N ; j++) //内循环中在无序数中找最小值(j=i这里循环从i开始,因为i之前都是有序数,不用再比较了)
{
if (list[min] > list[j])
{
min = j;
}
}
//最小值与无序数中的第一个元素交换
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
冒泡排序,每一次外循环,其中的最大数就下沉到当前两两比较数的最后一位
public static void BubbleSort(int[] list) //冒泡排序(升序)
{
int N = list.Length; //获得数组list的长度N
for (int i = 1; i <= N - 1; i++) //外循环进行N-1轮比较
{
for (int j = 0; j <= N - 1 - i; j++) //内循环进两两比较,大数下沉(‘- i’外循环循环完一次选出一个最大值放在后面,后面的就不用再比较了,)
{
if (list[j] > list[j+1]) //前一个数比后一个数大就替换当前两个数,最后最大数就到最后一个了
{
int t = list[j];
list[j] = list[j+1];
list[j+1] = t;
}
}
}
}
下面就让我们来实现一下吧!
private void Form1_Load(object sender, EventArgs e)
{ //数组排序 int[] iList = new int[5]; Random rd = new Random(); for (int i = 0; i < iList.Length; i++) { int iRD = rd.Next(1, 51); if (iList.Contains(iRD)) { i--; continue; } iList[i] = iRD; } BubbleSort(iList);
string strWrite = ""; foreach (int i in iList) { strWrite += i + " "; } textBox1.Text = strWrite; }