冒泡算法:它重复地走访过要排序的元素列,依次比较两个相邻的元素
通用代码:
void BubbleSort(int arr[], int n)
{
//从小到大排序 相邻来两个数比较,将大的数字往后放
for (int i = 0; i < n - 1; i++) //n-1是因为数组下标最大为n-1 要进行10(//9)轮比较
{
//n-1是因为数组下标最大为n-1 要进行10(//9)次比较,再减i是因为每最后的i个元素已经有序不需要继续排序
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1]) //两两比较,将小的数据放前面
{
swap(arr, j + 1, j); //交换arr数组arr[j+1]和arr[j]的值
}
}
}
}
//交换函数后面就不列举了,凡是swap都是下面代码实现的
void swap(int arr[], int x, int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
using System;
namespace _029_冒泡排序
{
class Program
{
static void Main(string[] args)
{
int[] nums = new int[10];
Console.WriteLine("请输入10个数字:");
for (int i = 0; i < nums.Length; i++)
{
nums[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("你输入的10个数字为:");
for (int i = 0; i < nums.Length; i++)
{
Console.Write(nums[i]+" ");
}
Console.WriteLine();
for (int i = 0; i < nums.Length-1; i++)
{
for (int j = 0; j < nums.Length-1-i; j++)
{
if (nums[j]>nums[j+1])
{
int temp = nums[j + 1];
nums[j + 1] = nums[j];
nums[j] = temp;
}
}
}
//一行代码解决排序
//Array.Sort(nums); //只能针对数组做一个升序排列
//Array.Reverse(nums); //反转数组元素
//如若进行降序 两个代码配合即可
//Array.Sort(nums); Array.Reverse(nums);
Console.WriteLine("从小到大排序为:");
for (int i = 0; i < nums.Length; i++)
{
Console.Write(nums[i]+" ");
}
Console.ReadKey();
}
}
}