排序算法2:冒泡排序
冒泡排序比较简单:
1.依次比较相连的两个元素,交换位置,大的往后推,最大的元素推到最后。
2.对剩下的元素,重复步骤1,2。
注意:参数传值的使用,值传递和引用传递。
MSDN:http://msdn.microsoft.com/zh-cn/library/9t0za5es(v=vs.90).aspx
形式参数都是在方法内部对参数进行操作,传递值类型是在内部复制一个副本,引用值类型包含的是对其数据的引用。
要对数据直接操作,可以加上引用变量ref。
控制台代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] myArray = new int[10]; MakeMewArray(myArray); for (int i = 0; i < 10; i++) { Console.WriteLine(myArray[i]); } Console.WriteLine("冒泡排序"); BubleSort(myArray); for (int i = 0; i < 10; i++) { Console.WriteLine(myArray[i]); } } /// <summary> /// 生成数组 /// </summary> /// <param name="array"></param> /// <param name="arrayLength"></param> public static void MakeMewArray(int[] array) { System.Random random = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = random.Next(1000); } } /// <summary> /// 冒泡排序 /// </summary> /// <param name="array"></param> public static void BubleSort(int[] array) { for (int j = array.Length; j > 0; j--) { for (int i = 0; i < array.Length - 1; i++) { if (array[i] > array[i + 1]) { //Swap(array[i], array[i + 1]); Swap(ref array[i], ref array[i + 1]); //Swap(array,i,i+1); } } } } /// <summary> /// 数值交换,该函数值传递,引用数组元素的话没有用,a/b是传人的数组元素的副本。交换的只是局部变量a/b的值 /// </summary> /// <param name="a"></param> /// <param name="b"></param> public static void Swap(int a,int b) { int number = a; a = b; b = number; } /// <summary> /// 数值交换,该函数值传递 /// </summary> /// <param name="a"></param> /// <param name="b"></param> public static void Swap(ref int a,ref int b) { int number = a; a = b; b = number; } /// <summary> /// 数值交换 /// </summary> /// <param name="a"></param> /// <param name="b"></param> public static void Swap(int[] array,int a, int b) { int number = array[a]; array[a] = array[b]; array[b] = number; } } }
浙公网安备 33010602011771号