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]);
}
}
网友评论