排序分为:内部排序和外部排序 内部排序是在排序的整个过程中,待排序的所有记录全部放置在内存中。外部排序是由于记录排序的个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。
而我们所说的八大排序都是内部排序。
关系如下:
而八大排序指的是:
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];
}
}
`
其他有待更新。很快