publicSqList(int[] data) { var length = (data.Length > MaxSize ? MaxSize : data.Length); Length = length; for (var i = 0; i < length; i++) { Data[i] = data[i]; } } publicvoidSwap(refint a, refint b) { var temp = a; a = b; b = temp; } ///<summary> /// 只能算是简单交换排序,经历一遍内存循环,将最小值置于第 i 位 ///</summary> publicvoidBubbleSort0() { for (var i = 0; i < Length; i++) { for (var j = i + 1; j < Length; j++) { if (Data[i] > Data[j]) { Swap(ref Data[i], ref Data[j]); } } } }
publicvoidShowDatas() { var data = newint[Length]; for (var i = 0; i < Length; i++) { data[i] = Data[i]; } Console.WriteLine(string.Join("->", data)); }
}
经典冒泡排序
///<summary> /// 经典冒泡排序,从后向前依次比较,较小值上浮 ///</summary> publicvoidBubbleSort1() { for (var i = 0; i < Length; i++) { for (var j = Length -1; j > i; j--) { if (Data[j] < Data[j-1]) { Swap(ref Data[j], ref Data[j-1]); } } } }
优化冒泡排序
///<summary> /// 优化冒泡排序,设置标记,当存在交换时,设置标记,否则退出循环 ///</summary> publicvoidBubbleSort2() { var flag = false; for (var i = 0; i < Length && !flag; i++) { flag = true; for (var j = Length - 1; j > i; j--) { if (Data[j] >= Data[j - 1]) continue; Swap(ref Data[j], ref Data[j - 1]); flag = false; } } }
简单选择排序
简单选择排序(Simple Selection Sort)就是通过 n - i 次关键字间的比较,从 n - i + 1 个记录中选出关键字最小的记录,并和第 i 个记录交换。
///<summary> /// 简单选择排序,通过比较第 i 位与其之后的最小值,若存在,则交换 ///</summary> publicvoidSelectionSort() { for (var i = 0; i < Length; i++) { var minIndex = i; for (var j = i + 1; j < Length; j++) { if (Data[minIndex] > Data[j]) { minIndex = j; } }