Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序

冒泡排序:

    int[] hehe={4,7,2,5,6,9,0};

      for(int i=0;i<hehe.length;i++){
        for(int j=i+1;j<hehe.length;j++){
            if(hehe[i]>hehe[j]){
                int temp=hehe[i];
                hehe[i]=hehe[j];
                hehe[j]=temp;
            }
        }
      }

插入排序

int[] a={13,7,8,9,10,1,2,32};
      int i,j,t,h;
      for (i=1;i<a.length;i++)
      {
       t=a[i]; //存后一位的数

       j=i-1;

       while(j>=0 && t<a[j])
       {
         a[j+1]=a[j]; //将后一位数等于前一位

           j--;

       }
       a[j+1]=t; //如果进行了while将后一位数等于存的后一位数

       System.out.print("第"+i+"步排序结果:");           //输出每步排序的结果
       for(h=0;h<a.length;h++)
       {
           System.out.print(" "+a[h]);             //输出
       }
       System.out.print("\n");
      } 

简单排序

for (int i = 0; i < hehe.length - 1; i++) {
           int min = i;
           // Find smallest name
           for (int j = i + 1; j < hehe.length; j++) {
               if (hehe[j] < hehe[min]) // 找到最小值 注意此处不是判断a[j]<a[i]
                   min = j;
           }
           // Swap data if necessary
           if (min != i) {
               int temp = hehe[i];
               hehe[i] = hehe[min];
               hehe[min] = temp;
           }
       }
       for (int i = 0; i < hehe.length; i++) {
        System.out.println(hehe[i]);
    }

二分法排序

int[] a = { 4, 2, 1, 6, 3, 6, 0, -5, 1, 1 };

        for (int i = 0; i < 10; i++) {
            System.out.printf("%d  ", a[i]);
        }
        System.out.println("第0次");
        int i, j;
        int low, high, mid;
        int temp;
        for (i = 1; i < 10; i++) {
            temp = a[i];
            low = 0;
            high = i - 1;
            mid = (low + high) / 2;
            // 求high的值,也就是要换的次数
            while (low <= high) {
                mid = (low + high) / 2;

                if (a[mid] > temp)
                    high = mid - 1; // 对次数的计算
                else
                    low = mid + 1;
            }
            // 对数进行交换
            for (j = i - 1; j > high; j--) {
                a[j + 1] = a[j];
            }
            a[high + 1] = temp;

        }

        for (i = 0; i < 10; i++) {
            System.out.printf("%d  ", a[i]);
        }
        System.out.println("排序后");
    }

快速排序

public class quickSort {
    public void quick_sort(int[] arrays, int lenght) {
        if (null == arrays || lenght < 1) {
            System.out.println("input error!");
            return;
        }
        _quick_sort(arrays, 0, lenght - 1);
    }

    public void _quick_sort(int[] arrays, int start, int end) {
        if (start >= end) {
            return;
        }

        int i = start;
        int j = end;
        int value = arrays[i];
        boolean flag = true;
        while (i != j) {
            if (flag) {
                if (value > arrays[j]) {
                    swap(arrays, i, j);
                    flag = false;

                } else {
                    j--;
                }
            } else {
                if (value < arrays[i]) {
                    swap(arrays, i, j);
                    flag = true;
                } else {
                    i++;
                }
            }
        }
        snp(arrays);
        _quick_sort(arrays, start, j - 1);
        _quick_sort(arrays, i + 1, end);

    }

    public void snp(int[] arrays) {
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
        System.out.println();
    }

    private void swap(int[] arrays, int i, int j) {
        int temp;
        temp = arrays[i];
        arrays[i] = arrays[j];
        arrays[j] = temp;
    }

    public static void main(String args[]) {
        quickSort q = new quickSort();
        int[] a = { 49, 38, 65, 12, 45, 5 };
        q.quick_sort(a, 6);
    }

}
时间: 2024-10-06 00:12:12

Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序的相关文章

[设计模式](转)Java中的24种设计模式与7大原则

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

排序算法—冒泡排序

*/--> 排序算法-冒泡排序 Table of Contents 1 问题描述 2 冒泡排序(Bubble) 2.1 冒泡排序(一) 2.2 冒泡排序(二) 2.3 冒泡排序(三) 2.4 冒泡排序(四) 3 阅读参考 1 问题描述 引子 排序是数据结构中十分重要的一章,排序算法有很多种,一直没时间整理而且很多排序算法理解的也不是很透彻.希望通过这次整理吃透吧! 排序算法十分多,故分篇进行整理. 说明 本文重点是理解排序算法,而不是完整的程序,所以每节都只有具体排序算法的接口.没有完整的源代码

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s

Java中的几种默认

1.每个类都默认导入 import java.lang.*; 2.如果一个类没有定义构造方法,则默认提供公开无参构造方法 3.在类中,访问成员变量或成员方法,如果不加引用,默认加上"this." 4.在构造方法中,如果第一行不是"this(...)"或"super(...)" ,默认为"super();" 5.在接口中,属性默认为public static final 方法默认为public abstract 6.如果一个类没

JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用)的作用.同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. JAVA中的四种引用 四种引用中,软引用.若引用.虚引用都需要相关类来创建.创建的时候

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

算法学习之排序算法:插入排序(直接插入排序、折半插入排序、2-路插入排序)

引言: 插入排序作为最简单易于理解的排序算法,基本实现比较简单.本文详细介绍直接插入排序,并给出实现,简单的介绍折半插入排序,并给出2-路插入排序和表插入排序两种插入排序,但并未给出具体实现. 一.直接插入排序 直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的.记录数增1的有序表. 算法描述: 步骤1.将待排序的一组记录中的第1个记录拿出来作为一组有序的记录(当然此时该组记录仅有1个记录). 步骤2.依次将待排序的一组记录中的记录拿出来插入到前面已排好序的记录中. 步

【排序算法】用C++实现各种排序算法

1. 在平时的学习中,很经常听到各种排序算法,各自有其优缺点.尝试自己用C++实现各排序算法,作为对算法的基础学习. 常见的内部排序: 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序 [排序算法]用C++实现各种排序算法

排序算法系列——插入排序

记录学习点滴,菜鸟成长记 接触算法是研究生期间做项目时,需要编写一些诸如GA.QGA的时候,第一次使用“排序”还是用的Java自带的Comparator接口.后来买了<算法导论>来看,发现果然所有知识都是有专业壁垒的,简单的一个问题尽然蕴藏着如此多的思想,发现此简直欣喜无比,遂决定要好好研究研究.只有深入后才发现,原来算法的不仅仅是按照逻辑顺序写个程序那么简单,好的算法要考虑到方方面面,最简单的时间复杂度就够我学习很长时间了. 将自己学习排序算法的一些理解和感悟记录于此,方便自己温故而知新.