static void Main(string[] args) { #region 冒泡排序 //初始数据 int[] arr = { 6, 3, 8, 2, 9, 1 }; int temp; //循环次数 var allNum = 0; TimeSpan startTime = new TimeSpan(DateTime.Now.Ticks); for (var i = 0; i < arr.Length -1; i++) { //循环比对 for (var j = i+1; j < arr.Length;j++) { //替换操作(先从一个循环比对后续多个的排序) if (arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } allNum++; } } TimeSpan endTime = new TimeSpan(DateTime.Now.Ticks); TimeSpan countTime = startTime.Subtract(endTime).Duration(); Console.WriteLine("总耗时间:" + countTime.TotalMilliseconds.ToString() + "毫秒"); for (var j = 0; j < arr.Length; j++) { Console.WriteLine(arr[j]); } Console.WriteLine("一共循环次数:" + allNum); #endregion Console.ReadKey(); }
附上优化:
static void Main(string[] args) { //冒泡排序 int[] arry = { 5, 6, 9, 1, 5, 3, 2, 10 }; int sumNum = 0; Boolean isOK = false; //循环获取数据 for (int i = 0; i < arry.Length - 1; i++) { isOK = true; for (int j = 0; j < arry.Length - i - 1; j++) { //判断结果赋值 int temp; if (arry[j] > arry[j + 1]) { temp = arry[j + 1]; arry[j + 1] = arry[j]; arry[j] = temp; isOK = false; } sumNum++; } //如果上一轮冒泡排序已经全部有序,则全部排出 //// 即flag!=false,则直接退出,不用进行下一轮冒泡循环,提高效率,否则数组已经有序了,他还会继续冒泡循环 if (isOK) { break; } } //输出 foreach (var o in arry) { Console.WriteLine(o); } Console.WriteLine("一共计算了{0}次",sumNum); Console.ReadKey(); }
参考:https://www.cnblogs.com/fuck1/p/5966680.html
谢谢