黑马程序员技术交流社区

标题: Java中有哪些排序方法 [打印本页]

作者: hi2hcs    时间: 2014-9-3 22:05
标题: Java中有哪些排序方法
Java中有哪些排序方法呢?其中比较高效是哪一种啊?如有它们代码就更好,谢谢!!!
作者: MR.Sun    时间: 2014-9-3 22:25
  1. public static void paiXu(int arr[]){ //冒泡排序!
  2.                 for(int x=0;x<arr.length-1;x++){
  3.                         for(int y=0;y<arr.length-x-1;y++){
  4.                                 if(arr[y]>arr[y+1]){
  5.                                         int temp=arr[y];
  6.                                         arr[y]=arr[y+1];
  7.                                         arr[y+1]=temp;
  8.                                 }                               
  9.                         }
  10.                 }
  11.         }
复制代码
    冒泡排序吧。。这个是冒泡排序的函数。我也是初学。。。你可以参考一下

作者: lala    时间: 2014-9-4 00:09
常见的排序方法有:选择排序,插入排序,冒泡排序,快速排序等,快速排序的效率最高,网上有代码。我也只写了冒泡排序,这个比较容易。
作者: cs8630323    时间: 2014-9-4 15:34
基础测试题自己做
作者: liaorubei    时间: 2014-9-4 20:24
排序方法不是只属于那种语言的,只不过可以说是在那种语言下的实现方法而已,比如冒泡排序,既有JAVA的实现方式,也有C#的实现方式,还有JAVASCRIPT的实现方式等。
至于排序方法有什么,排序方法其实有很多,比如三楼的就有一部分,还有什么希尔排序,堆排序等。

就好比蛋炒饭一样,有家常做法,有酒店的精致做法,
炒饭的类型有牛肉蛋炒饭,香肠蛋炒饭一样
作者: 黑马-胡明    时间: 2014-9-4 21:03
插入排序,冒泡排序,交换排序,选择排序,归并排序,基数排序。自己可以网上看看每种排序的使用方法。个人感觉知道一两种就OK了,实际中用到的不多吧。
作者: 风轻扬    时间: 2014-9-4 21:13
java中比较常用的排序方法有四种,分别是:快速排序法、冒泡法、选择排序法、插入排序法,
<1>利用Arrays带有的排序方法快速排序
import java.util.Arrays;
  public class Test2{
          public static void main(String[] args){
                  int[] a={5,4,2,4,9,1};
                  Arrays.sort(a);  //进行排序
                 for(int i: a){
                        System.out.print(i);
                }
          }
}

<2>冒泡排序算法
  public static int[] bubbleSort(int[] args){//冒泡排序算法
                 for(int i=0;i<args.length-1;i++){
                        for(int j=i+1;j<args.length;j++){
                                 if (args[i]>args[j]){
                                         int temp=args[i];
                                         args[i]=args[j];
                                         args[j]=temp;
                                 }
                         }
                 }
                 return args;
         }

<3>选择排序算法
public static int[] selectSort(int[] args){//选择排序算法
                for (int i=0;i<args.length-1 ;i++ ){
                        int min=i;
                        for (int j=i+1;j<args.length ;j++ ){
                                if (args[min]>args[j]){
                                        min=j;
                                }
                        }
                        if (min!=i){
                        int temp=args[i];
                        args[i]=args[min];
                        args[min]=temp;        
                        }
                }
                return args;
        }

<4>插入排序算法
public static int[] insertSort(int[] args){//插入排序算法
                for(int i=1;i<args.length;i++){
                        for(int j=i;j>0;j--){
                                if (args[j]<args[j-1]){
                                        int temp=args[j-1];
                                        args[j-1]=args[j];
                                        args[j]=temp;        
                                }else break;
                        }
                }
                return args;
        }
希望对你有用



























































































































                       



作者: hi2hcs    时间: 2014-9-5 09:38
风轻扬 发表于 2014-9-4 21:13
java中比较常用的排序方法有四种,分别是:快速排序法、冒泡法、选择排序法、插入排序法,
利用Arrays带有 ...

谢谢!!!
作者: hi2hcs    时间: 2014-9-5 09:43
MR.Sun 发表于 2014-9-3 22:25
冒泡排序吧。。这个是冒泡排序的函数。我也是初学。。。你可以参考一下
...

虽然我不大认为效率最高的是冒泡法,但仍谢谢你!!!
作者: bullfrog    时间: 2014-9-5 09:49
快速排序quicksort有点难度,要看懂不是很容易,在网上搜搜tutorial.
作者: 卖艺人    时间: 2014-9-5 09:52
过来学习一下
作者: 左脑想你    时间: 2014-9-5 10:13
package com.itheima;
/**
* 第四题  请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
* @author admin
*常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序
*当然在大多数情况下快速排序是一种相对高效的排序方法
*下面实现快速排序
*/
public class Test4 {
        public static  void main(String[] args){
                int[] a ={18,98,39,80,23,84,2,54,98,347};
                //int a[] = {34,5,67,8,90,92,3,4,56};
                System.out.println("原序列为:");
                //数组遍历输出
                for (int n = 0; n < a.length; n++){
                        if (n!=(a.length-1)) {
                                System.out.print(a[n] + "--");       
                        }
                        else{
                                System.out.println(a[n]);
                        }
                }
                quickSort(a, 0, a.length - 1);
                System.out.println("排序后为:");
                //排序后的数组遍历输出
                for (int i = 0; i < a.length; i++){
                        if (i!=(a.length-1)) {
                                System.out.print(a[i] + "--");       
                        }
                        else{
                                System.out.println(a[i]);
                        }
                }
        }
        // 快速排序算法实现数组排序
        public static void quickSort(int a[], int begin, int end){
                if (begin >= end)
                        return;
                int key = a[begin];// 存储该数组段以begin为下标的数组元素
                int pointRight = begin;// 数组指针,向右指
                int pointLeft = end;// 数组指针,向左指向
                while (pointRight != pointLeft){
                        // 从右边找一个小于等于key的放到a[pointRight]
                        while (pointLeft != pointRight && a[pointLeft] > key){
                                pointLeft--;
                        }
                        if (pointLeft == pointRight)
                                break;
                        a[pointRight] = a[pointLeft];
                        pointRight++;
                        // 从左边找一个比key大的放到a[pointLeft]
                        while (pointLeft != pointRight && a[pointRight] <= key){
                                pointRight++;
                        }
                        if (pointLeft == pointRight)
                                break;
                        a[pointLeft] = a[pointRight];
                        pointLeft--;
                }
                a[pointRight] = key;
                //使用递归方法完成排序
                quickSort(a, begin, pointRight - 1);
                quickSort(a, pointRight + 1, end);
        }
}
题目还是自己作的好,java其实提供的有快排,直接调用即可,这个是自己写的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2