本文主要介绍三种分类方法:交换排序,冒泡排序,选择排序。

1、交换排序

  主要思想:将第一小的放到第一个位置,将第二小的放到第二个位置.....

  操作:两层循环,第一层循环变量i从0到len-2,第二层循环变量j从i+1到len-1;循环体:当num[i]>num[j]时交换二者的位置

  代码:

 1 for (int i = 0; i < nums.Length - 1; i++)
 2 {
 3     //在 i-(nums.Length-1) 范围内,将该范围内最小的数字提到i
 4     for (int j = i + 1; j < nums.Length; j++)
 5     {
 6         if (nums[i] > nums[j])
 7         {
 8             //交换
 9             int temp = nums[i];
10             nums[i] = nums[j];
11             nums[j] = temp;
12         }
13     }
14 }

 

 

2、冒泡排序

  主要思想:在0-i的范围内将该范围内最大的沉到位置i

  操作:两层循环。第一层循环变量i从len-1到1,第二层循环变量j从0到i-1;循环体:当num[j]>num[j+1],交换二者的位置

  代码:

 1 for (int i = nums.Length - 1; i > 0; i--)
 2 {
 3     //在 0-i 范围内,将该范围内最大的数字沉到i
 4     for (int j = 0; j < i; j++)
 5     {
 6         if (nums[j] > nums[j+1])
 7         {
 8             //交换
 9             int temp = nums[j];
10             nums[j] = nums[j+1];
11             nums[j+1] = temp;
12         }
13     }
14 }

 

 

3、选择排序

  主要思想:找到最大元素的下标,与当前元素交换

  操作:两层循环。第一层循环变量i从0到len-2,第二层循环变量j从i+1到len-1,循环体:比较num[i]和num[j]的大小,单独用一个变量index保存大的那个数的下标。最后将index指向的变量与num[i]交换

  代码:

 1 for (int i = 0; i < nums.Length - 1; i++)
 2 {
 3     //在 i-(nums.Length-1) 范围内,将该范围内最小的数字提到i
 4     //1. 首先找到 i - (nums.Length-1) 范围内的最小数所在的下标
 5     int index = i; //先假设最小数的下标是i
 6     for (int j = i + 1; j < nums.Length; j++)
 7     {
 8         if (nums[j] < nums[index])
 9         {
10             //发现了更小的数
11             index = j;//记录下标
12         }
13     }
14     //2. 然后将nums[i]和nums[index]的值交换
15     int temp = nums[i];
16     nums[i] = nums[index];
17     nums[index] = temp;
18 }