java 常用五种排序

转载 2016年03月28日 14:35:06
//冒泡排序
    //依次比较相邻的两个元素,通过一次比较把未排序序列中最大(或最小)的元素放置在未排序序列的末尾。
    public static void BubbleSort (int data[]) {  
        for (int i = 0; i < data.length -1; i++) {  
            for (int j = 0; j < data.length - i - 1; j++) {  
                if (data[j] > data[j + 1]) {  
                    int temp = data[j];  
                    data[j] = data[j + 1];  
                    data[j + 1] = temp;  
                }  
 
            }  
        }  
    }
    
    //选择排序
    /**
     每一次从待排序的数据元素中选出最小(或最大)的一个元素,
     顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
     **/
    public static void SelectionSort  (int data[]) {  
        int minVal;  
       int minIndex;  
       for (int i = 0; i < data.length - 1; i++) {  
           minVal = data[i];  
           minIndex = i;  
           for (int j = i + 1; j < data.length; j++) {  
               if (data[j] < minVal) {  
                   minVal = data[j];  
                   minIndex = j;  
               }  
           }  
           if (minVal != data[i] && minIndex != i) {  
               data[minIndex] = data[i];  
               data[i] = minVal;  
           }  
       }  
   }
    
    //插入排序
    /**
     将数列分为有序和无序两个部分,
     每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,
     找出插入位置,将该元素插入到有序数列的合适位置中。
     * **/
     public static void InsertionSort (int data[]) {  
            for (int i = 1; i < data.length; i++) {  
                for (int j = i; j > 0; j--) {  
                    if (data[j] < data[j - 1]) {  
                           int temp = data[j];  
                         data[j] = data[j - 1];  
                        data[j - 1] = temp;
                    }  
                }  
            }  
        }  
    
    
    
     //快速排序
     /**
      通过一趟排序将要排序的数据分割成独立的两部分,
     其中一部分的所有数据都比另外一部分的所有数据都小,
     然后再按此方法对这两部分数据分别进行快速排序,
     整个排序过程可以递归进行,以此达到整个数据变成有序序列。
     **/
     public static void Quicksort(int data[], int start, int end) {  
            if (end - start <= 0) {  
                return;  
            }  
            int last = start;  
            for (int i = start + 1; i <= end; i++) {  
                if (data[i] < data[start]) {  
                    int temp = data[++last];  
                    data[last] = data[i];  
                    data[i] = temp;  
                }  
            }  
            int temp = data[last];  
            data[last] = data[start];  
            data[start] = temp;  
            Quicksort(data, start, last - 1);  
            Quicksort(data, last + 1, end);  
        }  
    
     //归并排序
     /**
     将两个(或两个以上)有序表合并成一个新的有序表,
     即把待排序序列分为若干个子序列,每个子序列是有序的。
     然后再把有序子序列合并为整体有序序列。排序过程如下:
    (1)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
    (2)设定两个指针,最初位置分别为两个已经排序序列的起始位置
    (3)比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
    (4)重复步骤3直到某一指针达到序列尾
     (5)将另一序列剩下的所有元素直接复制到合并序列尾
     **/
       public static void sort(int data[], int start, int end) {  
            if (start < end) {  
                int mid = (start + end) / 2;  
                sort(data, start, mid);  
                sort(data, mid + 1, end);  
                merge(data, start, mid, end);  
            }  
        }  
      
        public static void merge(int data[], int start, int mid, int end) {  
            int temp[] = new int[end - start + 1];  
            int i = start;  
            int j = mid + 1;  
            int k = 0;  
            while (i <= mid && j <= end) {  
                if (data[i] < data[j]) {  
                    temp[k++] = data[i++];  
                } else {  
                    temp[k++] = data[j++];  
                }  
            }  
      
            while (i <= mid) {  
                temp[k++] = data[i++];  
            }  
            while (j <= end) {  
                temp[k++] = data[j++];  
            }  
      
            for (k = 0, i = start; k < temp.length; k++, i++) {  
                data[i] = temp[k];  
            }  
        }
    

用Java语言实现五种常用排序

// 选择排序 private static void select_sort(int a[]) { int i, j, t, min; for (i = 0; i < a.length...

五种常用的Java设计模式

  • 2013年04月02日 10:56
  • 60KB
  • 下载

Oracle排序中NULL值处理的五种常用方法

育龙网核心提示: 1、缺省Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前2、使用nvl函数nvl函数可以将输   1、缺省 ...

五种常用排序方法

排序是计算机程序设计中一种重要的操作, 以下是五种常用的排序方法: 冒泡排序: 不解释了 快速排序 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小...

五种排序算法的JAVA 实现

1.插入排序 函数代码如下: public void insertSort(int length){ int k = 0; for(int present = ...

java常见五种排序方式

java常见五种排序方式 package com.zhi.sort;public class Sortdemo {/** * 冒泡法排序* 比较相邻的元素。如果第一个比第二个...

Java语言实现五种常用的算法的应用举例

用动态规划法解决最大子段和问题 二、实验目的:        课程设计是《算法分析与设计》课程不可缺少的重要实践性环节。通过实践教学,要达到以下目的: (1)使学生掌握动态规划法思想 (2...

java中常用的五种线程池的实现

java中常用的五种线程池的实现

【Java】五种常见排序之-----------冒泡排序

冒泡排序: 原理: 将关键字较小的值不断地上浮,将关键字值较大的不断下沉;时间复杂度:O(n^2)空间复杂度:最优(即已经排好序)为0,平均空间复杂度为O(1);核心代码: ...

【Java】五种常见排序之------------------快速排序

原理:1.取序列第一个记录为枢纽记录,其关键字为Pivotkey;指针low指向序列第一个位置,指针high  * 指向序列最后一个位置;  * 2.从high指向的记录开始,向前找到一个关键字的值小...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 常用五种排序
举报原因:
原因补充:

(最多只允许输入30个字)