-
Java基础03_数组排序
数组排序
-
选择排序:每轮选最小的放前面
- 将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换
- 循环第一条规则,找到最小的元素,放在第一位
- 经过n-1轮比较完成排序
public class SelectionSort {
public static void main(String[] args) {
int[] array = {8,2,3,7,1};
array = selectionSort(array);//调用选择排序的方法
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+",");
}
}
public static int[] selectionSort(int[] array) {
for (int i = 0; i < array.length-1; i++) {
for (int j = i + 1; j < array.length; j++) {
if(array[i]>array[j]){ //如果要降序,把大于号改成小于号
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return array;
}
}
- 冒泡排序:比较相邻元素,大的向后交换,将小的放到前面
public class BubbleSort {
public static void main(String[] args) {
int[] array = {8,2,3,7,1};
array = bubbleSort(array); //调用冒泡排序后得到升序排序后的新数组
for (int i = 0; i < array.length; i++) {
if(i == array.length-1){
System.out.print(array[i]+" "); //最后一个元素后面加空格
}else {
System.out.print(array[i]+",");//只要不是最后一个元素就用逗号隔开
}
}
}
public static int[] bubbleSort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length-i-1; j++) {
if(array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
}
-
插入排序:
- 将数组分为两部分,将后部分的第一个元素逐一与前部分每一个元素比较,如果当前元素校,就移动比较元素
- 找到合理位置插入
public class InsertSort {
public static void main(String[] args) {
int[] array = {8,2,3,7,1};
array = insertSort(array);
System.out.println(Arrays.toString(array));
}
public static int[] insertSort(int[] array) {
int j,temp;
for (int i = 1; i < array.length; i++) {
temp = array[i];
//利用循环找到插入位置:到头j=-1
for (j = i - 1; j >= 0 && array[j] > temp; j--) {
array[j+1] = array[j];//[j]->[j+1]向后移动
}
array[j + 1] = temp;//将temp的值给array[j+1] ,j+1是因为循环结束后j的值变成-1了
}
return array;
}
}
-
API快速排序Arrays.sort
- Arrays.toString(数组名)以数组的形式输出数组元素
- Arrays.copyOf(array,array.lenth)拷贝(复制)数组
public class ArraysDemo {
public static void main(String[] args) {
int[] array = {8,2,3,7,1};
Arrays.sort(array);//快速排序
System.out.println(Arrays.toString(array));//以数组的形式输出
}
}
- 排序效率:Arrays.sort(array)>插入排序>选择排序>冒泡排序
来源:https://www.cnblogs.com/wangyh-1997/p/14763204.html
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比