算法之排序
作者:互联网
排序算法可以分为如图所示8种。只有数据非常大时(超过10亿)才用外部排序。
一. 冒泡排序(每遍历一次,两两进行比较,将较大或较小的数放在后面(交换位置))
package com.bzw.sort; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] array = {5,4,3,2,1}; boolean flag = false; int count = 0; for (int i=0;i<array.length-1;i++){ for (int j=0;j<array.length-1-i;j++){ //每遍历一次相当于选出当前数组中的最大值 if (array[j] > array[j+1]){ flag = true; int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } count++; } if (!flag){ //在一次遍历中一次都没有进行交换,说明排序已经完成,不必再往后循环了 break; } else { flag = false; } } System.out.println(Arrays.toString(array)); System.out.println("遍历次数" + count); } }
二. 简单选择排序(先假设第一个数就是最大值或最小值,然后遍历找到真的最小值,交换位置)
package com.bzw.sort; import java.util.Arrays; public class ChooseSort { public static void main(String[] args) { int[] array = {4,3,-2,6,5}; for (int i=0;i<array.length-1;i++){ for (int j=i;j<array.length;j++){ if (array[j] < array[i]){ int temp = array[j]; array[j] = array[i]; array[i] = temp; } } } System.out.println(Arrays.toString(array)); } }
三. 直接插入排序(从头开始遍历,每遍历到一个数与前面的数进行比较,当有一个数比这个数小时,就插在这个数后面。)
package com.bzw.sort; import java.util.Arrays; public class InsertSort { public static void main(String[] args) { int[] array = {2, 1, 5, -3, 4, 2, -5, 9}; // 自己写的代码,没有老师写的通俗易懂 // for (int i=0;i<array.length;i++){ // for (int j=0;j<i+1;j++){ // if (array[i] < array[j]){ // int temp = array[i]; // int k = i; // while ( j != k ){ // array[k] = array[k-1]; // k--; // } // array[j] = temp; // } // } // } // System.out.println(Arrays.toString(array)); // } // 老师代码 for (int i = 0; i < array.length; i++) { int insertVal = array[i]; int insertIndex = i - 1; while (insertIndex >= 0 && insertVal < array[insertIndex]) { array[insertIndex + 1] = array[insertIndex]; insertIndex--; } //insertIndex + 1 即为要插入的位置 array[insertIndex + 1] = insertVal; } System.out.println(Arrays.toString(array)); } }
标签:insertIndex,遍历,int,Arrays,算法,array,排序,public 来源: https://www.cnblogs.com/tiger2048/p/14106319.html