4e1548abe2
Part1
70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
using System;
|
|
namespace Lesson
|
|
{
|
|
class Program
|
|
{
|
|
static void Print(int[] arr)
|
|
{
|
|
for (int i = 0; i < arr.Length; i++)
|
|
{
|
|
Console.Write(arr[i] + " ");
|
|
}
|
|
Console.WriteLine();
|
|
}
|
|
static void Main(string[] args)
|
|
{
|
|
#region 知识点一 排序的基本概念
|
|
//排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录调整为“有序的”
|
|
int[] arr = new int[] { 8, 7, 1, 5, 4, 2, 6, 3, 9};
|
|
#endregion
|
|
Print(arr);
|
|
|
|
|
|
|
|
#region 知识点二 基本原理
|
|
//两两相比
|
|
//不停比较
|
|
//不停交换
|
|
#endregion
|
|
|
|
|
|
|
|
bool isSort;//声明一个标识来保存是否进行交换的状态
|
|
#region 知识点三 代码实现
|
|
int temp;
|
|
for (int i = 0; i < arr.Length; i++)
|
|
{
|
|
isSort = false;
|
|
for (int j = 0; j < arr.Length - 1 - i; j++)//-i可以直接省去后面已经确定位置那一轮的比较
|
|
{
|
|
if (arr[j] > arr[j + 1])
|
|
{
|
|
isSort = true;//被交换了被表示true
|
|
temp = arr[j];
|
|
arr[j] = arr[j + 1];
|
|
arr[j + 1] = temp;
|
|
}
|
|
}
|
|
if (!isSort) { break; }//如果是true就继续交换,如果没有交换就false跳过这一轮
|
|
}
|
|
#endregion
|
|
|
|
Print(arr);
|
|
#region 知识点四 优化
|
|
//1.确定位置的数(极值)可以不用继续比了
|
|
//所以 没完成n轮 后面位置的数 就不用参与比较了
|
|
|
|
//2.特殊情况的优化
|
|
//比如在某一轮已经得到最终序列后,还会继续判断几轮,可以省去这几轮的时间
|
|
//
|
|
#endregion
|
|
|
|
#region 知识点五
|
|
#endregion
|
|
|
|
#region 知识点六
|
|
#endregion
|
|
}
|
|
}
|
|
}
|