做时间的朋友😭
C#常用的排序方法

冒泡排序(Bubble Sort)

基本思路是:将相邻的记录的关键码进行比较,若前面记录的关键码大于后面记录的关键码,则将它们交换,否则不交换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void Sort(int[] arrNum)//传递一个数组排序
{
//冒泡排序
for (int i = 0; i < arrNum.Length-1; i++)
{
for (int j = 0; j < arrNum.Length-1-i; j++)
{
if (arrNum[j]>arrNum[j+1])
{
int temp = arrNum[j];
arrNum[j] = arrNum[j+1];
arrNum[j+1] = temp;
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void Sort(int[] sortArray)//传递一个数组排序
{
bool swapped;
do
{
swapped = false;//如果不发生交换,do-while则跳出循环
for (int i = 0; i < sortArray.Length - 1; i++)
{
if (sortArray[i] > sortArray[i + 1])
{
int temp = sortArray[i];
sortArray[i] = sortArray[i + 1];
sortArray[i + 1] = temp;
swapped = true;//如果发生交换,do-while则继续循环
}
}
} while (swapped);
}

简单选择排序(Simple Select Sort)算法

基本思路是:
从左到右开始,以第一个元素 (i = 0) 作为 基准数,与后面的数作比较,找到比它小的数就置换位置,以此类推 ,以第二元素(i = 1) 作为 基准数,与后面的数比较,找到比它小的数就置换位置.直至循环结束.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
static void InsertSort(int[] dataArray)
{
for (int i = 1; i < dataArray.Length; i++)
{
int iValue = dataArray[i];
bool isInsert = false;
//拿到i位置的元素 跟前面所有的元素作比较
for (int j = i - 1; j >= 0; j--)
{
if (dataArray[j] > iValue)
{
//如果发现比i大的,就让它向后移动
dataArray[j + 1] = dataArray[j];
}
else
{
//发现一个比i小的值就停下来
dataArray[j + 1] = iValue;
isInsert = true;
break;
}
}
//如果i这个值最小,所有元素都向后移动一位了,就把这个元素放到 0 号索引上
if (isInsert == false)
{
dataArray[0] = iValue;
Console.WriteLine(iValue);
}
}
}

快速排序

该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
static void QuickSort(int[] dataArray, int left, int right)
{
if (left < right)
{
//基准数, 把比它小或者等于它的 放在它的左边,然后把比它大的放在它的右边
int x = dataArray[left];
int i = left;
int j = right;

while (i < j)//当i==j的时候,说明我们找到了一个中间位置,这个中间位置就是基准数应该所在的位置
{
//从后往前比较
//找到了一个比基准数 小于或者等于的数子,应该把它放在x的左边
while (i < j)
{
if (dataArray[j] <= x)
{
dataArray[i] = dataArray[j];
break;
}
else
{
j--;//向左移动 到下一个数字,然后做比较
}
}
//从前往后
while (i < j)
{
if (dataArray[i] > x)
{
dataArray[j] = dataArray[i];
break;
}
else
{
i++;
}
}
}
//跳出循环 现在i==j i是中间位置
dataArray[i] = x;
QuickSort(dataArray, left, i - 1);// left -i- right
QuickSort(dataArray, i + 1, right);
}
}

Array.Sort()

From:https://docs.microsoft.com/en-US/dotnet/api/system.array.sort?view=netcore-3.1

转载于:https://blog.csdn.net/qq_40985921/article/details/90727368

C# 排序
C# Path.Combine方法代码示例
利用Hexo创建博客
© 2022 Sk8erBoi
Powered by hexo | Theme is blank
Title - Artist
0:00