选择排序和插入排序

Posted IT界一虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序和插入排序相关的知识,希望对你有一定的参考价值。

图片来源于搜罗网(https://www.souluo.me/)


package chuangyeyilu.sort;

/**

 * 选择排序和插入排序

 * @author Pan Chong

 *

 */

public class Sort {


/**

* 选择排序: 首先在数组中查找最小值, 如果该值不在第一个位置, 那么将其

* 和处在第一个位置的元素交换,然后从第二个位置重复此过程,将剩下元素中

* 最小值交换到第二个位置 。当到最后一位 时,数组排序结束

* @param array

*/

static void selectionSort(int[] array) {

for (int i = 0; i < array.length - 1; i++) {

int min_idx = i;

for (int j = i + 1; j < array.length; j++) {

if (array[j] < array[min_idx]) {

min_idx = j;

}

}

if (min_idx != i) {

swap(array, min_idx, i);

}

}

}

/**

* 交换数组数据

*/

private static void swap(int[] array, int min_idx, int i) {

int temp = array[min_idx];

array[min_idx] = array[i];

array[i] = temp;

}


/**

* 插入排序 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,

* 找到相应位置并插入。核心思想是假设第一个元素排好,之后的元素对排好的部

* 分从后向前比较并逐一移动。

* @param array

*/

public static void insertSort(int[] array) {

int in, out;

for (out = 1; out < array.length; out++) {

int temp = array[out];

in = out;

while (in > 0 && array[in - 1] >= temp) {

array[in] = array[in - 1];

--in;

}

array[in] = temp;

}

}


public static void main(String[] args) {

int[] array = new int[] { 1, 2, 6, 5, 7, 9, 0, 121, 4545 };

long startTime = System.nanoTime();

selectionSort(array);

for (int i : array) {

System.out.println(i);

}

long endTime = System.nanoTime();

System.out.println("选择排序耗时:" + (endTime - startTime));

int[] array2 = new int[] { 1, 2, 6, 5, 7, 9, 0, 121, 4545 };

long startTime1 = System.nanoTime();

insertSort(array2);

for (int i : array2) {

System.out.println(i);

}

long endTime1 = System.nanoTime();

System.out.println("插入排序耗时:" + (endTime1 - startTime1));

}

}


当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 选择排序和插入排序


以上是关于选择排序和插入排序的主要内容,如果未能解决你的问题,请参考以下文章

插入排序(直接插入排序希尔排序);交换排序(冒泡排序快速排序);选择排序(简单选择排序堆排序);归并排序和基数排序;基于关键词比较的排序算法下界分析

数据结构(14)---排序之插入排序(直接插入排序, 希尔排序)和选择排序(直接选择排序, 堆排序)

排序(选择插入希尔)

选择和插入排序

理解插入排序,希尔排序,选择排序的算法原理

五十五深入插入排序和选择排序