博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组排序
阅读量:7305 次
发布时间:2019-06-30

本文共 1511 字,大约阅读时间需要 5 分钟。

一 概述

1.双层循环

排序通常由双层循环实现,外层循环控制循环轮数,内层循环实现单次排序。外层循环的索引从1到arr.length-1,内层循环循环次数随外层循环循环次数的增加而减少。

二 冒泡法

1.基本思想

对比相邻的两个元素,如果满足条件,则交换位置,这样就把较大的元素移动到后面了。

2.算法实现

public static int[] bubbleSort(int[] arr) {        for (int i = 1; i < arr.length; i++) {            for (int j = 0; j < arr.length - i; j++) {                if (arr[j] > arr[j + 1]) {                    int temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }        return arr;    }

三 直接排序

1.基本思想

从未排序序列中筛选出最大值,放在未排序序列的尾部。外层循环循环一次,交换未排序序列最大值与未排序序列最后一个元素的位置,其他元素位置不变,关键是获取最大值的索引。直接排序比冒泡排序快。

内层循环切入点:假定未排序序列第一个即索引为0的元素为最大值,然后将其与剩余元素进行对比,获取最大值的索引。

2.算法实现

public static int[] directSort(int[] arr) {        int len = arr.length;        int index;        for (int i = 1; i < len; i++) {            index = 0;            for (int j = 1; j <= len - i; j++) {                if (arr[index] < arr[j]) {                    index = j;                }                int temp = arr[len - i];                arr[len - i] = arr[index];                arr[index] = temp;            }        }        return arr;    }

四 反转排序

1.基本思想

交换索引和为arr.length-1的两个元素的位置,只需一层循环,循环次数为arr.length/2-1。

2.算法实现

public static int[] reverseSort(int[] arr) {        for (int i = 0; i < arr.length / 2; i++) {            int temp = arr[i];            arr[i] = arr[arr.length - 1 - i];            arr[arr.length - 1 - i] = temp;        }        return arr;    }

 

转载于:https://www.cnblogs.com/tonghun/p/7141167.html

你可能感兴趣的文章
parity 钱包
查看>>
JDBC优化策略总结
查看>>
Javascript -- document的createDocumentFragment()方法
查看>>
[转]bootstrap-datetimepicker 火狐浏览器报错
查看>>
windows下如何修改mysql的端口号
查看>>
Nginx核心配置文件常用参数详解
查看>>
####### Scripts Summary #######
查看>>
【深度学习】理解dropout
查看>>
jenkins中使用rsync, scp命令
查看>>
vue 的watch用法
查看>>
程序猿必备的10款超有趣的SVG绘制动画赏析
查看>>
生活中的五个球
查看>>
Day2 MySql函数以及单表查询
查看>>
借助Redis做秒杀和限流的思考
查看>>
Java Cookie和Session
查看>>
Python 字典(Dictionary)
查看>>
移动端head头部常用meta标签
查看>>
Android中Activity启动模式详解
查看>>
设计模式六大原则(6):开闭原则
查看>>
CentOS6 安装并破解Jira 7
查看>>