选择排序是简单排序的一种,其排序思想为:首先将第一个数标记为最大数,其位置为最大数的位置;然后排除第一个数,使用第一个数和剩下的数依次比较,若剩下的数大于第一个数,则继续比较,直到找到最大数为止;最后判断实际最大数的位置是否就是默认最大数的位置,若不是,则用第一个数的位置和最大数的位置进行交换,则此时第一个数就是实际最大数。以此类推,比较剩下的数,得到降序排列;反之为升序排列。
/** 选择降序排序 **/ public static int[] dascSort(int[] param) { int in, out; int max; int temp; for (out = 0; out < param.length; out++) { // 默认最大数的位置 max = out; for (in = out + 1; in < param.length; in++) { if (param[max] < param[in]) { // 获取最大数的位置 max = in; } } // 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置 if (out != max) { temp = param[out]; param[out] = param[max]; param[max] = temp; } } return param; }
/** 选择升序排序 **/ public static int[] ascSort(int[] param) { int in, out; int max; int temp; for (out = param.length - 1; out > 0; out--) { // 默认最大数的位置 max = out; for (in = out - 1; in > 0; in--) { if (param[max] < param[in]) { max = in; } } // 当默认位置的最大数并不是实际的最大数时,和实际的最大数交换位置 if (out != max) { temp = param[out]; param[out] = param[max]; param[max] = temp; } } return param; }
执行升序和降序方法: public static void main(String[] args) { int[] param = { 1, 6, 7, 5 }; param = ascSort(param); System.out.print("升序结果为:"); for (int i = 0; i < param.length; i++) { System.out.print(param[i]); } System.out.println(""); param = dascSort(param); System.out.print("降序结果为:"); for (int i = 0; i < param.length; i++) { System.out.print(param[i]); } }
运行结果如下:
注意:
1、选择排序的效率为O(N*N),比较次数最多为N(N-1)/2,交换次数最多为N-1<N,其中N代表需要比较的数的个数;
2、选择排序不稳定
相关推荐
该方法可以接受一个布尔参数`ascending`,来决定是否按升序(默认)或降序进行排序。为了处理可能的异常,我们需要对输入的数组长度为零或者为负的情况做出响应,并添加适当的异常处理机制。 以下是一个简单的Java...
本主题将详细探讨“排序按钮封装、升序、降序”这一知识点,旨在帮助开发者更好地理解和实现这一功能。 首先,我们要理解“按钮封装”的概念。在编程中,封装是一种重要的面向对象编程原则,它意味着将数据和操作...
1.对int数组进行排序,sortAsc 升序,sortDesc降序 2.创建main函数,声明一个int数组,随机写入一些数字 3.sortAsc进行升序排列 4.使用双重for循环进行排序,当第一个数字大于第二个数字, 则交换位置 5.sortDesc则...
在Java中,实现堆排序通常涉及构建堆和进行排序两个主要步骤。 一、堆排序的基本原理 1. 建堆:首先将无序序列构建成一个大顶堆(升序时)或小顶堆(降序时)。对于大顶堆,根节点的值是整个堆中最大的,而小顶堆...
在本文中,我们将详细介绍如何使用 Comparable 接口对 Java 对象进行排序,包括升序、降序和倒叙排序。 首先,让我们看一下 Comparable 接口的定义: ```java public interface Comparable<T> { int compareTo(T ...
6. **升序和降序** 默认的`PriorityQueue`是升序的,即最小元素优先。若要创建降序的优先队列,你可以自定义比较器,使较大的元素优先: ```java PriorityQueue<Integer> descendingQueue = new PriorityQueue( ...
"JAVA基于Arrays.sort()实现数组升序和降序" 在 Java 中,排序数组是非常常见的操作之一,而 Java 提供了多种方式来实现数组的排序,其中一种常用的方法是使用 Arrays.sort() 方法。今天,我们将详细介绍如何使用 ...
升序排序意味着按时间的先后顺序排列,而降序排序则是按时间的倒序排列,即最新的时间排在最前面。 1. **数据获取与解析**: - 当从远程服务器获取时间数据时,通常是以JSON或其他格式的API响应返回。你需要使用像...
- 可以通过`Scanner`获取用户的输入,例如输入学号进行查找,或者输入排序条件(升序或降序)。 - 输出结果时,注意格式化输出,使信息清晰易读。 7. **异常处理**: - 文件读取时可能出现IOException,需要进行...
本篇文章将深入探讨如何实现一个特定的排序算法,即对数组进行排序,使得偶数索引位置的元素按照降序排列,而奇数索引位置的元素按照升序排列。这种排序规则在某些特定的数据处理场景下可能会非常有用。 首先,我们...
2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点
然后,使用合并,插入或选择排序算法,按请求的升序或降序对集合重新排序。 作者:Briana Berger 日期:4/10/2018 我学到的东西:我学习了如何一起使用合并,选择和插入排序来订购商店的产品。 我喜欢的东西:我...
文件中给出了冒泡排序和选择排序的具体实现。这些方法都接受一个待排序的数组和一个字符串参数`sortType`,用于指定排序的方向(升序或降序)。例如: ```java public void bubbleSort(int[] data, String sortType...
2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点 6.提交设计报告,...
"排序(java 面试编程).zip"这个压缩包中包含了一个名为"Sortor.java"的源代码文件和一个"题目.txt"的文本文件,用于实现对输入的数字进行升序或降序排序的功能。下面将详细解释相关知识点。 1. **排序算法**:排序...
在IT领域,数组排序是一个常见的问题,特别是在算法和数据结构的学习中。本项目"minimum-Swaps-Array-Solution"关注的是如何以最少的交换次数将一个无序数组排列成升序或降序。这个问题在实际应用中有着广泛的意义,...
Java排序算法实现主要涉及到两种经典的算法:冒泡排序和选择排序。这两种算法都是基于比较的排序方法,适用于小规模或教学目的的数据排序。 **冒泡排序(Bubble Sort)** 是一种简单直观的排序算法,其核心思想是...
在Java编程中,排序算法是数据处理和算法设计...`bubbleSort`和`selectSort`方法分别实现了冒泡排序和直接选择排序,支持升序和降序排列。这些函数可以用于实际的编程练习和项目中,帮助理解各种排序算法的原理和实现。
Bitonic排序算法是分治策略的一个实例,其核心思想是将序列分为升序和降序两部分,然后进行合并。这种算法在最坏、最好和平均情况下都具有O(n log n)的时间复杂度,其中n是待排序元素的数量。 在Java中实现Bitonic...