常见对象_数组高级冒泡排序原理图解、数组高级冒泡排序代码实现
2016-11-17 23:37
741 查看
package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */ public class ArrayDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; System.out.println("排序前:"); printArray(arr); /* // 第一次比较 // arr.length - 1是为了防止数据越界(数组长度-1) // arr.length - 1 - 0是为了减少比较的次数 for (int x = 0; x < arr.length - 1 - 0; x++) { if (arr[x] > arr[x + 1]) { int temp = arr[x]; arr[x] = arr[x + 1]; arr[x + 1] = temp; } } System.out.println("第一次比较后:"); printArray(arr); // 第二次比较 // arr.length - 1是为了防止数据越界(数组长度-1) // arr.length - 1 - 1是为了减少比较的次数 for (int x = 0; x < arr.length - 1 - 1; x++) { if (arr[x] > arr[x + 1]) { int temp = arr[x]; arr[x] = arr[x + 1]; arr[x + 1] = temp; } } System.out.println("第二次比较后:"); printArray(arr); // 第三次比较 // arr.length - 1是为了防止数据越界(数组长度-1) // arr.length - 1 - 2是为了减少比较的次数 for (int x = 0; x < arr.length - 1 - 2; x++) { if (arr[x] > arr[x + 1]) { int temp = arr[x]; arr[x] = arr[x + 1]; arr[x + 1] = temp; } } System.out.println("第三次比较后:"); printArray(arr); // 第四次比较 // arr.length - 1是为了防止数据越界(数组长度-1) // arr.length - 1 - 2是为了减少比较的次数 for (int x = 0; x < arr.length - 1 - 3; x++) { if (arr[x] > arr[x + 1]) { int temp = arr[x]; arr[x] = arr[x + 1]; arr[x + 1] = temp; } } System.out.println("第四次比较后:"); printArray(arr); // 上面的代码重复度太高了,所以用循环改进 for (int y = 0; y < 4; y++) { for (int x = 0; x < arr.length - 1 - y; x++) { if (arr[x] > arr[x + 1]) { int temp = arr[x]; arr[x] = arr[x + 1]; arr[x + 1] = temp; } } } System.out.println("循环改进比较后:"); printArray(arr); */ /* //由于我们知道比较的次数是数组长度-1次,所以改进最终版程序 for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = temp; } } } System.out.println("排序后:"); printArray(arr); */ //由于我要可能 有多个数组要排序,所以我要写成方法 bubbleSort(arr); System.out.println("排序后:"); printArray(arr); } // 冒泡排序代码 public static void bubbleSort(int[] arr){ for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y];//arr[y]索引2,把索引2的元素80赋值给temp,temp就是80了。 arr[y] = arr[y + 1];//arr[y+1]索引是2+1=3, 把索引3的元素57赋值给索引2, 所以索引2就是元素57。 arr[y + 1] = temp;////temp数据是80,把80赋值给索引2+1=3,所以索引3的元素是80 } } } } // 遍历功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } }
相关文章推荐
- 常见对象_数组高级选择排序原理图解、数组高级选择排序代码实现
- 常见对象_数组高级二分查找原理图解
- 1.数组--最大值 2.数组--选择排序与图解 3.数组--冒泡排序图解 4.数组--1.自带排序2.遍历功能方便 5.数组-常见操作-排序位置置换代码提取
- 【Java】数组的冒泡排序和选择排序(原理+代码实现)
- 二叉堆建堆的优化算法原理图解及代码实现
- 常见算法详解(原理及代码实现)
- Java实现冒泡排序(图解 + 代码实现)
- vue数组对象排序的实现代码
- C#基础之数组排序、对象大小比较实现代码
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 排序技术_各种算法原理 图解 代码实现
- 排序技术_各种算法原理 图解 代码实现
- 常见对象_在大串中查找小串出现的次数案例代码实现
- java实现数组的冒泡排序、选择排序代码
- 常见对象_StringBuffer、数组高级以及Arrays、Integer、Character总结
- 面试中常见的数组的操作:遍历,最值,反转,冒泡排序,二分查找(附代码)
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 算法 -- Java实现冒泡排序(图解 + 代码实现)
- js获取对象、数组的实际长度,元素实际个数的实现代码
- js实现的对象数组根据对象的键值进行排序代码