---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
1、冒泡排序
冒泡排序的原理是每两个两个数进行比较,符合判断条件的就交换位置,否则就不动。然后经过多趟的循环后就可以到达排序的目的。
例:
将int[] a={1,2,3,4,5,6,7,8,9,10};里面的10个元素按照从大到小的顺序进行排列,(注意这是取了一个极端的例子,那么它符合了,其它的情况就必然都符合这个原理)
分析:两个两个进行比较,则第1趟下来变成:2 3 4 5 6 7 8 9 10 1
.....................................................2趟..................:3 4 5 6 7 8 9 10 2 1
、
、
、
以此类推: .......................................9趟................:10 9 8 7 6 5 4 3 2 1
由以上推理出:(1)总共需要n-1趟,(2)第一趟需要两辆比较n-1次,第二趟需要比较n-2次,则第n-1趟需要比较n-(n-1)次
所以代码如下:
int[] nums = { 23, 45, 67, 98, 678, 546, 54 };
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])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine(nums[i]);
}
Console.ReadKey();
2、选择排序
原理:从第一个位置数开始,跟后面的每个数进行比较,符合判断条件的就交换数的位置,否则不动。
例: 将int[] a={1,2,3,4,5,6,7,8,9,10};里面的10个元素按照从大到小的顺序进行排列
第一趟:10 1 2 3 4 5 6 7 8 9
第二趟:10 9 1 2 3 4 5 6 7 8
以此类推:
第八趟:10 9 8 7 6 5 4 3 1 2
第九趟:10 9 8 7 6 5 4 3 2 1
代码如下:
int[] nums = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i <= nums.Length - 2; i++) //控制趟数
{
for (int j = i + 1; j <= nums.Length - 1; j++) //控制每趟里面的次数
{
if (nums[i] < nums[j])
{
int temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
}
}
foreach (int n in nums)
{
Console.WriteLine(n);
}
Console.ReadKey();
综上小结:冒泡排序和选择排序区别在于:冒泡排序是两两进行比较,然后一趟一趟的循环,直到排好序为止
选择排序是从数的第一个位置开始依次和后面的数进行比较
--------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------