美文网首页程序员
冒泡、插入、选择排序

冒泡、插入、选择排序

作者: 胡子先生丶 | 来源:发表于2018-12-06 22:06 被阅读0次
1. 冒泡排序(Bubble Sort):

冒泡排序只会操作相邻的两个数据。每次冒泡操作都是对相邻的两个元素比较,看是否满足大小关系,如果不满足就让他俩互换,一次冒泡会让至少的一个元素移动到它应该在的位置,重复N次,就完成了N个数据的排序工资。

1.1. 算法描述

比较相邻的元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。

1.2. 代码实现:
int[] arr = {8, 3, 5, 4, 1, 2, 6 };
for (int i = 0; i < arr.Length; i++)
{
        for (int j = 0; j < arr.Length - i - 1; j++)
        {
               if (arr[j + i] < arr[j])
               {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
               }
         }
}
2.插入排序:

它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

2.1 算法描述

从第一个元素开始,该元素可以认为已经被排序;
取出下一个元素,在已经排序的元素序列中从后向前扫描;
如果该元素(已排序)大于新元素,将该元素移到下一位置;
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

2.2 代码实现:
int[] insertSort = { 3,8, 5, 4, 1, 2, 6 };
for (int i = 1; i < insertSort.Length; i++)
 {
         int val = insertSort[i];
         int j = i - 1;
         for (; j >= 0; j--)
         {
              if (insertSort[j] > val)
              {
                    insertSort[j + 1] = insertSort[j]; // 数据移动
              }
              else { break; }
        }
        insertSort[j + 1] = val; // 插入数据
}
3.选择排序
3.1:

原理:每次重未排序的元素中取出最小的元素放在起始位置;

3.2:

算法描述:
从未排序的元素中取出第一个元素,索引Index;
第一步取出的元素依次与后面的元素比较,并找到最小元素的位置J;
交互位置,并循环1.2步;

3.3 代码实现
   public void SelectionSort(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                int temp = 0;
                int index = i;
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[index] > arr[j])
                    {
                        index = j;
                    }
                }

                temp = arr[index];
                arr[index] = arr[i];
                arr[i] = temp;

                Console.WriteLine(arr[i]);
            }
        }

相关文章

网友评论

    本文标题:冒泡、插入、选择排序

    本文链接:https://www.haomeiwen.com/subject/pmvacqtx.html