全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 区块链 >

Java学习-----冒泡、选择、插入、快速排序算法

时间:2018-01-16 18:38

人气:

作者:admin

标签: JAVA  冒泡  -----  选择  学习 

导读:Java学习-----冒泡、选择、插入、快速排序算法-一.冒泡排序基本思想:两个数比较大小,较大的下沉,小的上浮。1.第一趟,相邻的两个数比较,后一个数小,就交换两数的位置;2.依次...

一.冒泡排序 基本思想:两个数比较大小,较大的下沉,小的上浮。 1.第一趟,相邻的两个数比较,后一个数小,就交换两数的位置; 2.依次往后走,最后找到最大的数; 3.针对所有的数重复以上的步骤,除了最后一个; 4.持续每次对越来越少的数重复上面的步骤,直到没有任何一对数字需要比较。

例如: 3,2,7,1,5
第一趟第一次:2,3,7,1,5
第二次:2,3,7,1,5
第三次:2,3,1,7,5
第四次:2,3,1,5,7
第二趟第一次:2,3,1,7,5
第二次:2,1,3,7,5
……
最后:1,2,3,5,7

private static void BubbleSort(int[] arr) { for (int i = 0; i < arr.length; i++) { //表示趟数,一共走n-1次 for (int j = 0; j < arr.length-1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } System.out.print(arr[j]+" "); } System.out.println(); } } 二.选择排序 基本思想:

在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
第二次遍历n-2个数,找到最小的数值与第二个元素交换;
……
第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。

private static void SelectionSort(int[] arr){ for(int i=0;iarr[j]){ minIndex=j; } if(minIndex!=i){ int temp = arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=temp; } } } } 三.插入排序 基本思想:

在要排序的一组数据中,假定前n-1个数据已经排好序,将第n个数据插入排好序的这个有序数列中,使得插入后的数列也是排好序的。如此,反复循环,知道全部排好序。

private static void InsertSort(int[] arr) { for (int i = 0; i < arr.length-1; i++) { for (int j = i + 1; j >0; j--) { if (arr[j] < arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } } } 四.快速排序 基本思想:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

实现思路:

—1.以第一个数作为基准,将数组分为两个子区,左区的全部小于等于这个基准值,右区的大于等于这个基准值。此时,两个子区还处于乱序状态。
—2.在把左区作为一个整体,用步骤1再处理一次;右区同理。
— 3.重复步骤1.2.直至左区处理完毕。

private static void QuickSort(int[] arr, int low, int high) { if (low > high) { return; } int key = arr[low]; int i = low; int j = high; while (j > i) { // 从后往前比较 while (j > i && arr[j] >= key) { // 先看右边,找比基准值小的,依次递减 j--; } while (j > i && arr[i] < key) { // 再看左边,找比基准值大的,依次递增 i++; } if (j > i) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } // 将i=j的值设为基准值 arr[low] = arr[i]; arr[i] = key; // 递归调用左区 QuickSort(arr, low, j - 1); // 递归调用右区 QuickSort(arr, j + 1, high); }

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信