java---数字排序

Java中利用数组进行数字排序一般有4种方法:选择排序法、冒泡法、快速排序法、插入排序法。

选择排序是先将数组中的第一个数作为最大或最小数,然后通过循环比较交换最大数或最小数与一轮比较中第一个数位置进行排序;

冒泡排序也是先将数组中的第一个数作为最大或最小数,循环比较相邻两个数的大小,满足条件就互换位置,将最大数或最小数沉底;

快速排序法主要是运用Arrays类中的Arrays.sort方法()实现。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。

选择排序法

package com.lovo;

public class Test01 {

    public static void main(String[] args) {
        int[] a = new int[5];
            for(int i = 0; i < a.length; i++) {
            a[i] = (int) (Math.random() * 99 + 1);
            System.out.print(a[i] + "  ");
        }
        // 简单选择排序
        for(int i = 0; i < a.length - 1; i++) {
            int minIndex = i;
            for(int j = i + 1; j < a.length; j++) {
                if(a[j] < a[minIndex]) {
                    minIndex = j;
                }
            }
            if(minIndex != i) {
                int temp = a[i];
                a[i] = a[minIndex];
                a[minIndex] = temp;
            }
        }

        for(int x : a) {
            System.out.print(x + "  ");
        }
    }
}

冒泡排序法

package com.lovo;

public class Test02 {

	public static void main(String[] args) {
		int[] a = new int[5];
		for(int i = 0; i < a.length; i++) {
			a[i] = (int) (Math.random() * 99 + 1);
			System.out.print(a[i] + "  ");
		}
		// 冒泡排序

		boolean swapped = true;	// 有没有发生过交换
		for(int i = 1; swapped && i <= a.length - 1; i++) {
			swapped = false;
			for(int j = 0; j < a.length - i; j++) {
				if(a[j] > a[j + 1]) {
					int temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
					swapped = true;
				}
			}
		}

		for(int x : a) {
			System.out.print(x + "  ");
		}
	}
}

快速排序法

package com.lovo;

import java.util.Arrays;

public class Test03 {
	// 快速排序法
	public static void main(String[] args) {
		int[] a = new int[5];
		System.out.print("排序前: ");
		for (int i = 0; i < a.length; i++) {
			a[i] = (int) (Math.random() * 99 + 1);
			System.out.print(a[i] + "  ");
		}
		System.out.print("\n排序后:");
		Arrays.sort(a); // 进行排序
		for (int x : a) {
			System.out.print(x + "  ");
		}
	}
}
时间: 2024-09-29 04:53:26

java---数字排序的相关文章

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

java内部排序

1 public class MergeWorkAssignment implements Comparable<MergeWorkAssignment> 2 实现方法 3 public int compareTo(MergeWorkAssignment o) { 4 return this.getVocabularyName().compareToIgnoreCase(o.getVocabularyName()); 5 } 1 public class BriefTermExGroupSor

Java 常用排序算法/程序员必须掌握的 8大排序算法

Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n 个数插到前

java Map排序(升序、降序、随机排序)

基础知识: 1 HashMap会使用key,根据hashcode进行默认排序. 2  LinkedHashMap根据存入先后进行排序 代码展示: 1 随机排序 java Map排序(升序.降序.随机排序),布布扣,bubuko.com

Java-集合--Java集合排序

Java集合排序 前几天在工作的当中遇到对List<Map<String,String>>这样的数据结构按照Map<String,String>中的某个字段排序, 具体的实现为: <span style="font-size:18px;">public void sortList(List<Map<String, String>> list, final String field) { Collections.so

CCF系列之数字排序(201503-2)

问题描述试题编号: 201503-2试题名称: 数字排序时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出.输入格式 输入的第一行包含一个整数n,表示给定数字的个数. 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数.输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数.按出现次数递减的顺序输出.如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的.样例输入

Java重要排序

排序需要栗子,举个栗子先 23     32-1     42     32-2     24     17     71     33 32-1 和 32-2代表两个相同的数字32,只不过位置不同,用来判断排序是否稳定 稳定的意思就是: 排在前面的数字排序之后依旧在前面 选择排序 -- 不稳定 1.每轮找到最小的下标 17-->6(下标) , 23 -->1(下标)  下标交换 2.不停循环知道全部数字有序 插入排序 -- 稳定 1.每轮从数组中抽取一个,也就是第一个 2.第一次循环,第一个

java数字字符串累加1的解决方案

近期操作项目遇到这样的问题,研究了下搞出了一个解决方案. //num也可以是在数字字符串里面截取的,比如我有14位的数字字符串前六位是市级,7,8位代表县区,后两位代表乡镇,最后四位是累计+1的,这个时候你就可以根据前10位查出最大的是多少,然后用最大的+1得出新的最大的.. //你要+1的字符串 String num="0000"; //转成整数并执行累加操作,但是可能位数变少了,怎么办呢? int i=Integer.valueOf(Num)+1; //为了拼接字符串使用 Stri

java编程排序之自定义类型的集合,按业务需求排序

自定义引用类型放入集合中,按实际业务需求进行排序的两种思路 第一种思路: (1)自定义实体类实现java.lang.Comparable接口,重写public int compareTo(Object obj)方法.自定义业务比较规则 (2)利用java.util.Collections类的静态方法sort(List<自定义类型> list)进行排序(默认升序)或者.自己编写排序工具类.冒泡+compareTo(obj)方法 第二种思路 (1)自己编写业务比较规则类.实体类不用实现任何借口.业

java希尔排序算法

原文:java希尔排序算法 代码下载地址:http://www.zuidaima.com/share/1550463279090688.htm 希尔排序算法的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组内进行直接插人排序:然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<-<d2<d1),即所有记录放在同一组中进行直接插入排序为止.该方法实质上是一种