当前位置:首页 » 编程语言 » java的排序

java的排序

发布时间: 2022-01-14 06:30:14

java怎么实现排序

Java实现几种常见排序方法

日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。
以下常见算法的定义
1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
2. 选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
3. 冒泡排序:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。
4. 快速排序:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
5. 归并排序:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
6. 希尔排序:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
https://www.cnblogs.com/wangmingshun/p/5635292.html

Ⅱ JAVA中有哪几种常用的排序方法

1、冒泡排序
冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数为止,第一个数与第二个数比较,第二个数与第三个数比较,......,第n-j个与第n+1-j个比较,共比较n-1次。此时第n+1-j个位置上的数已经按要求排好,所以不参加以后的比较和交换操作。例如:第一轮排序:第一个数与第二个数进行比较,若不符合要求的顺序,则交换两者的位置,否则继续进行二个数与第三个数比较......。直到完成第n-1个数与第n个数的比较。此时第n个位置上的数已经按要求排好,它不参与以后的比较和交换操作;第二轮排序:第一个数与第二个数进行比较,......直到完成第n-2个数与第n-1个数的比较;......第n-1轮排序:第一个数与第二个数进行比较,若符合所要求的顺序,则结束冒泡法排序;若不符合要求的顺序,则交换两者的位置,然后结束冒泡法排序。
共n-1轮排序处理,第j轮进行n-j次比较和至多n-j次交换。
从以上排序过程可以看出,较大的数像气泡一样向上冒,而较小的数往下沉,故称冒泡法。

2、选择排序
选择法的原理是先将第一个数与后面的每一个数依次比较,不断将将小的赋给第一个数,从而找出最小的,然后第二个数与后面的每一个数依次比较,从而找出第二小的,然后第三个数与后面的

3、插入排序
插入排序的原理是对数组中的第i个元素,认为它前面的i-1个已经排序好,然后将它插入到前面的i-1个元素中。插入排序对少量元素的排序较为有效.

4、快速排序
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此大道整个数据变成有序序列。

Ⅲ java排序

importjava.io.File;
importjava.util.Arrays;
importjava.util.Comparator;

publicclassTest{
publicstaticvoidmain(String...args){
File[]files=getFilesOrder(newFile("c:/"));

for(Filef:files){
System.out.println(f.getName());
}
}

privatestaticFile[]getFilesOrder(Filefile){
File[]files=null;
if(file.exists()){
files=file.listFiles();
Arrays.sort(files,getComparator());
}
returnfiles;
}

privatestaticComparator<?superFile>getComparator(){
returnnewComparator<File>(){
@Override
publicintcompare(Fileo1,Fileo2){
if(o1.isDirectory()&&o2.isFile())
return1;
elseif(o2.isDirectory()&&o1.isFile())
return-1;
else
returno1.getName().compareTo(o2.getName());
}
};
}
}

File 可以是 “文件”,也可以是 “目录”,分开比较。

另外用 Comparator 比较方便。

Ⅳ java 配列排序

按照你的思路把程序改了一下,你看看是不是你想要的结果。程序如下:
public class A {
private static void selectionSort(int a[], int n) {
//临时变量 存放较小的值
int min;
//排序
for (int i = 0; i < n; i++) {
for (int j = (n-1); j > i; j--) {
if (a[j] < a[j - 1]) {
min = a[j];
a[j] = a[j - 1];
a[j - 1] = min;
}
}
}
//输出
for (int i = 0; i < n; i++) {
System.out.print(a[i]+" ");
}
//换行
System.out.println();
}

public static void main(String[] args) {

int a[] = { 12,5,10,15,9,2 };
int b[] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
int c[] = { 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 };

selectionSort(a, a.length);
selectionSort(b, b.length);
selectionSort(c, c.length);
}
}

Ⅳ java基础java中的排序知识按某个条件进行排序

Collections.sort(list,new Comparator<Object>(){
@Override
public int compare(Object o1, Object o2) {
return 0;}});

Ⅵ java中的排序

在java.util包里面有一个Arrays类,是专门对数组处理的,里面就有一些排序与搜索算法,这是不需要自己去写的。

java是开源的,它的类库都有源代码,在你的jdk的安装目录下有一个src.zip的压缩文件,里面都是java类库的源代码。你去看看吧,找到Arrays类,看看里面是这么些的。建议用UltraEdit打开,因为这些源代码是dos格式的

Ⅶ java 排序

public class P
{
public static void main(String[] args)
{
String str="abc";
int loop=str.length()+1;

while(loop>0)
{
System.out.println(str);
str=str.charAt(str.length()-1)+str.substring(0,str.length()-1);
loop--;
}
}
}

Ⅷ java中排序方法有哪些

1、直接插入排序:最基本的插入排序,将第i个插入到前i-1个中的适当位置。
2、折半插入排序:因为是已经确定了前部分是有序序列,所以在查找插入位置的时候可以用折半查找的方法进行查找,提高效率。
3、 希尔排序: 又称缩小增量排序法。把待排序序列分成若干较小的子序列,然后逐个使用直接插入排序法排序,最后再对一个较为有序的序列进行一次排序,主要是为了减少移动的次数,提高效率。原理应该就是从无序到渐渐有序,要比直接从无序到有序移动的次数会少一些。
4、 冒泡排序:反复扫描待排序序列,在扫描的过程中顺次比较相邻的两个元素的大小,若逆序就交换位置。第一趟,从第一个数据开始,比较相邻的两个数据,(以升序为例)如果大就交换,得到一个最大数据在末尾;然后进行第二趟,只扫描前n-1个元素,得到次大的放在倒数第二位。以此类推,最后得到升序序列。如果在扫描过程中,发现没有交换,说明已经排好序列,直接终止扫描。所以最多进行n-1趟扫描。
5、快速排序: 思想:冒泡排序一次只能消除一个逆序,为了能一次消除多个逆序,采用快速排序。以一个关键字为轴,从左从右依次与其进行对比,然后交换,第一趟结束后,可以把序列分为两个子序列,然后再分段进行快速排序,达到高效。
此外还有选择、归并、分配排序等等及它们的子类排序

Ⅸ java升序排序

其实排序JAVA已经给我们做好了, 你只是需要自己去调用|: 声明一个import java.util.Collections;再实现implements Comparator 通过Collections调用new 实现implements Comparator的类就行了 下面是代码: package 别人的程序的分析设计; /** * @author greatwqs * */ import java.util.Collections; import java.util.*; public class myQuiz{ public static void main(String[] args) { Employee e1 = new Employee("Cay",4000); Employee e2 = new Employee("Bush",6000); Manager m1 = new Manager ("Alice",5000); //m1.setBonus(100000); List<Employee> list_1=new ArrayList<Employee>(); list_1.add(e1); list_1.add(e2); list_1.add(m1); System.out.println("以下按薪水排序后输出[从高到低]"); Collections.sort(list_1,new Qing()); for(Employee e:list_1) System.out.println(e); List<Employee> list_2 = new ArrayList<Employee>(); list_2.add(e1); list_2.add(e2); list_2.add(m1); System.out.println("以下按照姓名字典顺序输出:"); Collections.sort(list_2 , new Song()); for(Employee em :list_2){ System.out.println(em); } } } class Qing implements Comparator{ public int compare(Object obj0, Object obj1){ Employee c0 = (Employee)obj0; Employee c1 = (Employee)obj1; if(c0.getSalary() >= c1.getSalary()) return -1; else return 1; } } 下面还有代码..

Ⅹ 关于java排序

假设顺序表A => aList 顺序表B => bList 顺序表C => cList
从小到大的升序排列 按照字符串第一个字母进行排序
List<String> aList = new ArrayList<String>();
List<String> bList = new ArrayList<String>();
假设aList和bList里都有值
List<String> cList = new ArrayList<String>();
先将 cList.addAll(aList);
cList.addAll(bList);
A和B存到C中
然后:继承接口Comparator 下面是重写方法:
public int compare(Object element1, Object element2) {
String lower1 = (String)element1;
String lower2 = (String)element2;
String str1 = "";
String str2 = "";
str1 = lower1.charAt(0);
str2 = lower2.charAt(0);
if(str1.compareTo(str2)<0)
{
return 1;
}
else
{
return 0;
}

}

这个方法通过取每个字符串的第一个字母来判断顺序
然后再新建一个类,将cList当参数传过来
Comparator comp1 = new SortByABC(); //SortByABC是上面那个类名
Collections.sort(cList, comp1);
return cList; //这样就返回排过序的list了

热点内容
C语言tf 发布:2024-11-15 14:36:22 浏览:810
违反密码法是什么意思 发布:2024-11-15 14:36:20 浏览:920
androidmp3录音 发布:2024-11-15 14:32:50 浏览:493
英朗自动挡哪个配置最好 发布:2024-11-15 14:27:44 浏览:253
编译原理断言有哪几种 发布:2024-11-15 14:25:29 浏览:200
数据库数据重复 发布:2024-11-15 14:23:17 浏览:781
安卓端开发用什么IDE 发布:2024-11-15 14:13:51 浏览:554
阿里云查看访问ip 发布:2024-11-15 14:08:58 浏览:544
随机字符串php 发布:2024-11-15 14:03:46 浏览:122
怎样用数据库搭建服务器 发布:2024-11-15 13:58:39 浏览:478