排序算法相关
排序算法相关
来日方长-zhq
写的东西大多是从网上搜到的,并加入了自己的理解,仅做为学习记录
展开
-
冒泡排序算法
public static void maopao(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]) { int temp = arr[j]; arr[j] = arr...原创 2021-03-11 10:22:01 · 60 阅读 · 0 评论 -
堆排序
public static void heapSortTest(int[] arr) { //大顶堆 二叉树的第一个非叶子节点 length/2-1 i节点的左子节点 2*i+1 右子节点 2*i+2 //第一个非叶子节点开始 for (int node_inx = arr.length / 2 - 1; node_inx >= 0; node_inx--) { adjustHeapTest(arr, node_inx, arr.le...原创 2021-03-11 10:21:38 · 41 阅读 · 0 评论 -
快速排序
/** * 快速排序 * 传过来一个数组和需要排序的起始下标和终止下标 * 以数组的起始下标的值做为基准点 * 从右边起,进行判断,都是大于基准值的,当存在一个小于基准数的,记录下标 * 从左边起,进行判断,都是小于基准值的,当存在一个大于基准数的,记录下标 * * 将以上的两个值进行对调 * 将对调后左边的值与第一个值进行对调 * 这样对于左边的数据,都是小于该值的,对于右边的数据,都是大于该值的, * 将该数值分为两段,进行递归操作,往返进行,得到排序后的值 * ...原创 2021-03-11 10:21:20 · 57 阅读 · 0 评论 -
插入排序
/** * 从数组的第二位开始遍历每一个元素 * 对遍历的每一个元素都与前面的元素进行比较,如果比前面遍历到的元素要小,就进行移位 * 在进行遍历的时候,左边的元素都是一个有序的数组 * * 插入排序 * @param arr */ public static void insertSort2(int[] arr) { //移位 //补位 for (int i = 1; i < arr.length; i++) { int temp = ...原创 2021-03-11 10:21:00 · 53 阅读 · 0 评论 -
选择排序
//选择排序 public static void selectSort(int[] arr) { //选择排序 从第一个元素与后面的所有元素相比较,找到最小的一个值,与第一个元素相比较,然后进行替换 //在从第二个元素开始 // for (int i = 0; i < arr.length - 1; i++) { //最小值的下标 int minIndex = i; for (int j = i + 1;...原创 2021-03-11 10:20:19 · 63 阅读 · 0 评论 -
shell排序(插入排序升级)
//插入排序升级 public static void shellSort(int[] arr) { //进行分组 //第一次两个一组 //第二次四个一组 for (int gap = arr.length / 2; gap > 0; gap /= 2) { //插入排序算法 //步长为gap 即每次移动的跨度 1/2 1/2/2=1/4 1/2/2/2=1/8 //先写插入排序 f...原创 2021-03-11 10:19:50 · 94 阅读 · 0 评论