C# 学习笔记 冒泡排序,选择排序,插入排序
本帖最后由 Cool_Breeze 于 2021-3-23 11:02 编辑堆排序。。。太难了!
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] TestList = {1, 6, 7, 3, 8, 2, 9, 4, 5};
// Bubble(ref TestList);
// Select(ref TestList);
// Insert(ref TestList);
var Result =
from value in TestList
orderby value ascending // ascending 升序 descending 降序
select value;
foreach (var n in Result) Console.Write("{0, 2}", n);
// foreach (var n in TestList) Console.Write("{0, 2}", n);
}
// 冒泡排序
static void Bubble(ref int[] array)
{
int temp = default(int);
for (int i=0; i<array.Length-1; i++) // 每次把最大的一个数移到末尾
{
for (int j=0; j<array.Length-1-i; j++) // 这里还需要减去 i个已经排好序的数(数组右边)
{
if (array > array)
{
temp = array;
array = array;
array = temp;
}
}
}
}
// 选择排序
static void Select(ref int[] array)
{
int temp = 0;
int value = 0;
for (int i=0; i<array.Length; i++)
{
temp = i; // 假设第array位为最大值
for (int j=i+1; j<array.Length; j++)
{
if (array > array)
{
temp = j;
}
}
if (temp != i) // 最大值下标发生改变,需要交换位置(说明i下标不是最大值)
{
value = array;
array = array;
array = value;
}
}
}
// 插入排序
static void Insert(ref int[] array)
{
int temp = 0;
for (int i=1; i<array.Length; i++) // 从数组第二个数开始,往左边插入
{
for (int j=i; j>0; j--) // 变量数组左边的数
{
if (array > array ) // 依次比较 j, j-1 位置的数
{
temp = array;
array = array;
array = temp;
}
else break; // 说明左边已经没有比当前数 array 还要大的数。
}
}
}
} 天天学习的快乐。 越学习越快乐 if (array > array)
{
temp = array;
array = array;
array = temp;
} 不应该是(array > array) 学习一下,学习使我进步 每天学习使我进步,加油 香香菜 发表于 2021-3-23 10:41
if (array > array)
{
temp = array;
冒泡排序吗? 比较相邻的2个数,j 和 j +1 是相邻的! 学会最难的才会用简单的
页:
[1]