public class MySort {
/**
* 插入排序(小到大)
* @param arr
* @return
*/
public int[] insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int copyNum = arr[ i ];
int targetIndex = i;
/*
* copyNumIndex>0看的是现在这个copyNumIndex是否已经越界了
* copyNum<arr[copyNumIndex-1])看复制出来的这个数是否小于本身前面的那个数
* 都满足,则证明没有还没找到插入的位置
*/
while (targetIndex>0 && copyNum<arr[ targetIndex - 1 ] ) {
arr[ targetIndex ] = arr[ targetIndex - 1 ]; //让前面的那个数替换掉copyNum的本体
targetIndex--;
}
arr[ targetIndex ] = copyNum;
}
return arr;
}
/**
* 选择排序
* @param arr
* @return
*/
public int[] selectSort(int[] arr) {
for(int i=0; i<arr.length-1; i++) {
//假设最小值
int min = arr[i];
int minIndex = i;
for(int j=i+1; j<arr.length; j++) {
if(min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
//如果循环过后没有变则跳过(减少交换操作)
if(min == arr[i])
continue;
swap(arr, i, minIndex);
}
return arr;
}
/**
* 冒泡排序
* @param arr
* @return
*/
public int[] bubbleSort(int[] arr) {
//控制次数
for(int i=0; i<arr.length-1; i++) {
for(int j=0; j<arr.length-(i+1); j++) {
if(arr[j] > arr[j+1]) {
swap(arr, j, j+1);
}
}
}
return arr;
}
/**
* 数值交换
* @param arr
* @param a 数组下标
* @param b 数组下标
*/
private void swap(int[] arr, int a, int b) {
int temp = arr[b];
arr[b] = arr[a];
arr[a] = temp;
}
/**
* 打印数据
* @param arr
*/
public void printArray(int[] arr) {
for (int i : arr) {
System.out.print(i + "\t");
}
}
}
冒泡排序选择排序插入排序
Posted 巅峰小学生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序选择排序插入排序相关的知识,希望对你有一定的参考价值。
以上是关于冒泡排序选择排序插入排序的主要内容,如果未能解决你的问题,请参考以下文章
排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)
[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)
总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚