冒泡排序1

数组排序


一、冒泡排序

排序规则:
两个数之间进行比较,如果前一个数比后一个数大,将两个数的位置交换
每一次排序就选出一个最大值,这一轮排出的最大值不参与下一轮比较

例子:

  •   原始数据    33   42   75   58   60   20    
    
  •   第一轮:     33   42   58   66   20   75     
    
  •   第二轮:     33   42   58   20   60   75      
    
  •   第三轮:     33   42   20   58   60   75      
    
  •   第四轮:     33   20   42   58   60   75      
    
  •   第五轮:     20   33   42   58   60   75      
    
  • 规律:
  • 1、比较的轮数 = 数据的个数 - 1
  • 2、每轮比较的次数在逐渐递减
  • 3、第一轮的比较次数 = 总个数 - 1

二、代码

代码如下(示例):

int[] arr = new int[] { 33, 42, 75, 58, 60, 20 };
		int m = 0;
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - i - 1; j++) {
				if (arr[j + 1] < arr[j]) {
					m = arr[j + 1];
					arr[j + 1] = arr[j];
					arr[j] = m;
				}
			}
		}
		System.out.println(Arrays.toString(arr));

输出(示例):

[20, 33, 42, 58, 60, 75]

总结

冒泡排序把小的元素往前冒泡或者把大的元素往后冒泡。比较两个相邻的元素,如果两个元素相等,不会交换;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
链接: link.

上一篇:牛客刷题33


下一篇:Topcoder 10748 - StringDecryption(dp)