`
shenjichao2009
  • 浏览: 96356 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java选择排序(升序和降序)

    博客分类:
  • Java
阅读更多

选择排序是简单排序的一种,其排序思想为:首先将第一个数标记为最大数,其位置为最大数的位置;然后排除第一个数,使用第一个数和剩下的数依次比较,若剩下的数大于第一个数,则继续比较,直到找到最大数为止;最后判断实际最大数的位置是否就是默认最大数的位置,若不是,则用第一个数的位置和最大数的位置进行交换,则此时第一个数就是实际最大数。以此类推,比较剩下的数,得到降序排列;反之为升序排列。



 

/** 选择降序排序 **/  
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、选择排序不稳定

  • 大小: 33.6 KB
  • 大小: 11.7 KB
分享到:
评论

相关推荐

    java冒泡排序(可处理各种异常,选择升序还是降序)

    该方法可以接受一个布尔参数`ascending`,来决定是否按升序(默认)或降序进行排序。为了处理可能的异常,我们需要对输入的数组长度为零或者为负的情况做出响应,并添加适当的异常处理机制。 以下是一个简单的Java...

    排序按钮封装、升序、降序

    本主题将详细探讨“排序按钮封装、升序、降序”这一知识点,旨在帮助开发者更好地理解和实现这一功能。 首先,我们要理解“按钮封装”的概念。在编程中,封装是一种重要的面向对象编程原则,它意味着将数据和操作...

    java 实现冒泡排序升序降序

    1.对int数组进行排序,sortAsc 升序,sortDesc降序 2.创建main函数,声明一个int数组,随机写入一些数字 3.sortAsc进行升序排列 4.使用双重for循环进行排序,当第一个数字大于第二个数字, 则交换位置 5.sortDesc则...

    堆排序详解升序和降序Java版本

    在Java中,实现堆排序通常涉及构建堆和进行排序两个主要步骤。 一、堆排序的基本原理 1. 建堆:首先将无序序列构建成一个大顶堆(升序时)或小顶堆(降序时)。对于大顶堆,根节点的值是整个堆中最大的,而小顶堆...

    java 实现Comparable接口排序,升序、降序、倒叙

    在本文中,我们将详细介绍如何使用 Comparable 接口对 Java 对象进行排序,包括升序、降序和倒叙排序。 首先,让我们看一下 Comparable 接口的定义: ```java public interface Comparable&lt;T&gt; { int compareTo(T ...

    优先队列-java可以选择属性和升序降序

    6. **升序和降序** 默认的`PriorityQueue`是升序的,即最小元素优先。若要创建降序的优先队列,你可以自定义比较器,使较大的元素优先: ```java PriorityQueue&lt;Integer&gt; descendingQueue = new PriorityQueue( ...

    JAVA基于Arrays.sort()实现数组升序和降序

    "JAVA基于Arrays.sort()实现数组升序和降序" 在 Java 中,排序数组是非常常见的操作之一,而 Java 提供了多种方式来实现数组的排序,其中一种常用的方法是使用 Arrays.sort() 方法。今天,我们将详细介绍如何使用 ...

    android时间升序降序排序

    升序排序意味着按时间的先后顺序排列,而降序排序则是按时间的倒序排列,即最新的时间排在最前面。 1. **数据获取与解析**: - 当从远程服务器获取时间数据时,通常是以JSON或其他格式的API响应返回。你需要使用像...

    java学号姓名成绩排序

    - 可以通过`Scanner`获取用户的输入,例如输入学号进行查找,或者输入排序条件(升序或降序)。 - 输出结果时,注意格式化输出,使信息清晰易读。 7. **异常处理**: - 文件读取时可能出现IOException,需要进行...

    ArraySorting:对数组排序(偶数项降序\奇数项升序)

    本篇文章将深入探讨如何实现一个特定的排序算法,即对数组进行排序,使得偶数索引位置的元素按照降序排列,而奇数索引位置的元素按照升序排列。这种排序规则在某些特定的数据处理场景下可能会非常有用。 首先,我们...

    java语言多种排序

    2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点

    Insert-Selection-Merge-Sort:使用商店的产品列表,根据名称,产品编号,价格或数量对它们进行排序。 然后,使用合并,插入或选择排序算法,按升序或降序对集合重新排序

    然后,使用合并,插入或选择排序算法,按请求的升序或降序对集合重新排序。 作者:Briana Berger 日期:4/10/2018 我学到的东西:我学习了如何一起使用合并,选择和插入排序来订购商店的产品。 我喜欢的东西:我...

    java排序.txt

    文件中给出了冒泡排序和选择排序的具体实现。这些方法都接受一个待排序的数组和一个字符串参数`sortType`,用于指定排序的方向(升序或降序)。例如: ```java public void bubbleSort(int[] data, String sortType...

    java负责排序的程序包

    2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点 6.提交设计报告,...

    排序(java 面试编程).zip

    "排序(java 面试编程).zip"这个压缩包中包含了一个名为"Sortor.java"的源代码文件和一个"题目.txt"的文本文件,用于实现对输入的数字进行升序或降序排序的功能。下面将详细解释相关知识点。 1. **排序算法**:排序...

    minimum-Swaps-Array-Solution:这是我对经典问题的解决方案,该问题确定将数组按升序或降序排列的最小交换次数

    在IT领域,数组排序是一个常见的问题,特别是在算法和数据结构的学习中。本项目"minimum-Swaps-Array-Solution"关注的是如何以最少的交换次数将一个无序数组排列成升序或降序。这个问题在实际应用中有着广泛的意义,...

    Java排序算法实现:冒泡与选择排序示例代码

    Java排序算法实现主要涉及到两种经典的算法:冒泡排序和选择排序。这两种算法都是基于比较的排序方法,适用于小规模或教学目的的数据排序。 **冒泡排序(Bubble Sort)** 是一种简单直观的排序算法,其核心思想是...

    java各种数组排序(插入,交换,选择,归类,基数排序).pdf

    在Java编程中,排序算法是数据处理和算法设计...`bubbleSort`和`selectSort`方法分别实现了冒泡排序和直接选择排序,支持升序和降序排列。这些函数可以用于实际的编程练习和项目中,帮助理解各种排序算法的原理和实现。

    排序算法-基于Java实现的排序算法之BitonicSort实现.zip

    Bitonic排序算法是分治策略的一个实例,其核心思想是将序列分为升序和降序两部分,然后进行合并。这种算法在最坏、最好和平均情况下都具有O(n log n)的时间复杂度,其中n是待排序元素的数量。 在Java中实现Bitonic...

Global site tag (gtag.js) - Google Analytics