首页 > 代码库 > 冒泡排序
冒泡排序
主要思想:依次比较相邻连个数,如果后面的(数组[j])数大于前面的(数组[j-1]),则将两个数交换位置
1.最简单实现:采用双重循环,外层进行控制,内层进行比较
第一次比较第0个元素一直到第n-1个元素(比较完成后最后一个元素肯定为最大的),第二次只需比较第0个元素到第n-2个元素
public static void BubbleSort1(int[] ary) { int n = ary.Length; for (int i = 0; i < n; i++) { for (int j = 1; j < n - i; j++) { if (ary[j - 1] > ary[j]) { int temp = ary[j - 1]; ary[j - 1] = ary[j]; ary[j] = temp; } } }
}
2.采用标志位的形式标识这一趟是否发生了排序,如果未发生排序则说明已经排序完成
public static void BubbleSort2(int[] ary) { bool flag = true; while (flag) { flag = false; int n = ary.Length; for (int i = 1; i < n; i++) { if (ary[i - 1] > ary[i]) { int temp = ary[i - 1]; ary[i - 1] = ary[i]; ary[i] = temp; flag = true; } n = n--; } //for (int t = 0; t < ary.Length; t++) //{ // Console.Write(ary[t] + " "); // if (((t + 1) / ary.Length) == 1) // Console.WriteLine(); //} } }
3。假设共有20条数据,第15个元素之后的数据已经是拍好顺序的,此时记录这个位置,下一次排序则只需要从0到15即可
public static void BubbleSort3(int[] ary) { int flag = ary.Length; while (flag > 0) { flag = 0; for (int j = 1; j < ary.Length; j++) { if (ary[j - 1] > ary[j]) { int temp = ary[j - 1]; ary[j - 1] = ary[j]; ary[j] = temp; flag = j; } } } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。