常见排序算法(java实现)

常见排序算法介绍

冒泡排序

  • 代码:
public class BubbleSort {

    public static void sort(int[] array) {
        int tValue;
        for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
                if (array[i] > array[j]) {
                    tValue = array[i];
                    array[i] = array[j];
                    array[j] = tValue;
                }
            }
        }
    }

    public static void main(String[] args) {
        int a[] = { 6, 2, 4, 5, 1, 9, 10, 7 };
        sort(a);
        for (int v : a) {
            System.out.print(v + " ");
        }
    }
}

输入结果:

1 2 4 5 6 7 9 10

插入排序:

  • 效果图:

  • 代码:
public class InsertSort {
    public static void sort(int[] array) {
        int tValue;
        int j;
        for (int i = 0; i < array.length; i++) {
            j = i;
            tValue = array[i];
            while (j > 0 && tValue < array[j - 1]) {
                array[j] = array[j - 1];
                j--;
            }
            array[j] = tValue;
        }
    }

    public static void main(String[] args) {
        int a[] = { 6, 2, 4, 5, 1, 9, 10, 7 };
        sort(a);
        for (int v : a) {
            System.out.print(v + " ");
        }
    }
} 

输入结果:

1 2 4 5 6 7 9 10

选择排序:

  • 代码:
public class SelectSort {
    public static void sort(int[] array) {
        int index, tValue;
        for (int i = 0; i < array.length; i++) {
            index = i;
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[index]) {
                    index = j;
                }
            }
            if (index != i) {
                tValue = array[i];
                array[i] = array[index];
                array[index] = tValue;
            }
        }
    }

    public static void main(String[] args) {
        int a[] = { 6, 2, 4, 5, 1, 9, 10, 7 };
        sort(a);
        for (int v : a) {
            System.out.print(v + " ");
        }
    }
}

输入结果:

1 2 4 5 6 7 9 10

高速排序:

  • 代码:
public class QuickSort {
    public static void quickSort(int[] array, int left, int right) {
        int i, j, bValue, tValue;
        if (left > right) {
            return;
        }
        i = left;
        j = right;
        bValue = array[left];
        while (i != j) {
            while (array[j] >= bValue && i < j) {
                j--;
            }
            while (array[i] <= bValue && i < j) {
                i++;
            }
            if (i < j) {
                tValue = array[i];
                array[i] = array[j];
                array[j] = tValue;
            }
        }

        array[left] = array[i];
        array[i] = bValue;

        quickSort(array, left, i - 1);
        quickSort(array, i + 1, right);
    }

    public static void main(String[] args) {
        int a[] = { 6, 2, 4, 5, 1, 9, 10, 7 };
        quickSort(a, 0, a.length - 1);
        for (int v : a) {
            System.out.print(v + " ");
        }
    }
}

输入结果:

1 2 4 5 6 7 9 10

參考资料:

http://blog.jobbole.com/11745/

时间: 2024-10-12 09:16:45

常见排序算法(java实现)的相关文章

常见排序算法JAVA实现

1.冒泡排序,时间复杂度:最好:T(n) = O(n) ,情况:T(n) = O(n2) ,平均:T(n) = O(n2) public int[] bubbleSort(int[] nums) { if (nums.length < 2) { return nums; } for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length - 1 - i; j++) { if (nums[j] > num

常见排序算法总结(java实现)

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.常见的排序算法有选择排序,插入排序,希尔排序,归并排序和快速排序 由于在排序的过程中不可避免的要涉及到比较和交换,所以将他们抽取为两个单独的函数,如下所示 //为了排序代码的通用性,这里假定待排序的元素实现了Comparable接口 private static boolean less(Comparable v ,Comparable w){ return v.compareTo(w)<0; } priva

【整理】常见排序算法及其时间复杂度总结

原文出处: 1. 白话经典算法系列之八 MoreWindows白话经典算法之七大排序总结篇 2. 面试常用算法总结--排序算法(java版) 3. 常见排序算法小结 本篇主要整理了冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序,堆排序七种常见算法,是从上面三篇博文中摘抄整理的,非原创. 一.冒泡排序 主要思路是: 通过交换相邻的两个数变成小数在前大数在后,这样每次遍历后,最大的数就"沉"到最后面了.重复N次即可以使数组有序. 冒泡排序改进1: 在某次遍历中,如果没有

常见排序算法(一) MergeSort

算法思想灰常重要,常见的用到分治思想的算法包括快速排序,归并,二分搜搜,大整数乘法等(参考 http://blog.csdn.net/com_stu_zhang/article/details/7233761,归纳很到位) 简单用归并对一个数组排序 思路: 简单来说对一个数组,只要他的左右两部分都是有序的,那么简单合并就ok了,那么左右两部分可以进一步划分各自的左右两部分----明显就是要递归了 算法:归并排序 1. 将数组一分为二,subArray1 和subArray2 2. 归并排序sub

几种常见排序算法

几种常见排序算法 几种常见排序算法 写在前面 基础介绍 初级排序算法 selection sort选择排序 insertion sort插入排序 ShellSort希尔排序 shuffing不是排序算法 merge sort归并排序 Abstract in-place merge原地归并的抽象方法 Top-down mergesort自顶向下的归并排序 Bottom-up mergesort自底向上的归并排序 quicksort 三向切分的快速排序 Heapsort堆排序 总结和比较 命题 本文

Java排序算法-Java入门|Java基础课程

Java 排序算法 1. 课程目标 排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2.适用对象 Java语言初学者 Java算法爱好者 3.相关概念 3.1 排序概念 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 3.2 排序算法 排序算法,就是如何使得记录按照要求排列的方法. 排序算法在很多领域得到相当地重视,尤其是在

排序算法Java实现

排序算法Java实现 排序算法的分类: 内部排序,在排序过程中,全部记录放在内存中,称为内部排序: 外部排序,在排序过程中需要使用外部存储(磁盘),则称为外部排序. 主要介绍内部排序: 插入排序:直接插入排序.二分法插入排序.希尔排序 选择排序:简单选择排序.堆排序 交换排序:冒泡排序.快速排序 归并排序 基数排序 插入排序 直接插入排序 基本思想:对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余记录为无序序列.接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的

常见排序算法(冒泡、选择、插入、快速、归并C++实现)

常见排序算法(冒泡.选择.插入.快速.归并C++实现) #include <iostream> using namespace std; // 冒泡排序 void bubbleSort (int data[], size_t size) { for (size_t i = 0; i < size - 1; ++i) { bool ordered = true; for (size_t j = 0; j < size - 1 - i; ++j) if (data[j+1] <

第六章 常见排序算法

上章回顾 二叉树的定义 树深度的定义 什么样的二叉树是满二叉树 中序遍历的规则 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第六章 第六章 常见排序算法 常见排序算法 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorith