排序分为:内部排序和外部排序 内部排序是在排序的整个过程中,待排序的所有记录全部放置在内存中。外部排序是由于记录排序的个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。
而我们所说的八大排序都是内部排序。
关系如下:
而八大排序指的是:
1,直接插入排序
2,希尔排序
3,简单选择排序
4,堆排序
5,冒泡排序
6,快速排序
7,归并排序
8,基数排序
#冒泡排序
// 冒泡排序 public static void BubbleSort(int[] arr) { for (int i = 1; i < arr.length ; i++) {//排序需要的趟数。 for (int j = 0; j < arr.length - i ; j++) {// if(arr[j + 1] < arr[j]) { int tem = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tem; } } } }
插入排序 的实现写了三个,实现的方式有点不一样但总体来说思想都是一样的。就我个人而言我更喜欢的是第一种
/* * 插入排序 从左向右扫描 * * 通过交换进行插入排序,借鉴冒泡排序 */ //用以确定一个标签元素 让其前面的元素依次从左到右与之比较 //如果出现比它更大的数就把标签元素插在他的前面 //从而达到排序的效果 public static void InsertSortFirst(int[] arr) { for(int i = 1 ;i < arr.length ;i++){ // for (int j = 0 ; j< i ; j++ ){//确定一个元素arr[i] ,即把该元素作为标签元素,让排在 if(arr[j] > arr[i]){// int tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; continue ; }//if //System.out.println(" i = "+ i + " "+ Arrays.toString(arr)); }//J_for System.out.println(" i = "+ i + " "+ Arrays.toString(arr)); }//i_for } /* * 插入排序算法 * * 通过交换进行插入排序,借鉴冒泡排序 * *i 用于外层循环 排好序后向后加一 *arr[j] 用作标签元素 在内层循环中扫描 比它更大的数 *如果出现 arr[j-1]>arr[j] 就进行交换 j-- *继续进行比较 出现 arr[j-1]<arr[j] 就退出本次循环 *进行下一个循环 * *该方法借鉴的是冒泡排序 */ public static void InsertSortSecond(int[] arr) { for (int i = 0 ; i < arr.length - 1 ; i++) { for (int j = i + 1 ; j > 0; j--) { if(arr[j - 1] > arr[j]) {// int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; }//if }//j_for }//i_for }//insertSort() /* * 插入排序通过 较大元素向右移动,达到交换两元素的效果 * 内层循环从后向前扫描 * */ public static void InsertSortThree(int[] arr) { for(int i = 1 ; i < arr.length ; i++) { int j; for ( j = i; j > 0 && arr[i] < arr[j - 1]; j--) { arr[j] = arr[j - 1]; } arr[j] = arr[i]; } }
其他有待更新。很快