zoukankan      html  css  js  c++  java
  • 交换类排序算法

    复习八大基础排序算法。分类:

    1. 插入类(直接插入、希尔排序)
    2. 选择类(直接选择、堆排序)
      3. 交换类(冒泡排序、快速排序)
    3. 归并排序
    4. 还有外部排序(桶排序?)

    冒泡排序

    public static void bubbleSort(Comparable[] a) {
    	for (int i = 0; i < a.length; i++) {
    		for (int j = 0; j < a.length - i - 1; j++) {
    			if (less(a[j+1], a[j]))	exch(a, j, j+1);
    		}
    	}
    }
    

    快速排序

    public static void quickSort(Comparable[] a) {
    	StdRandom.shuffle(a);
    	quickSort(a, 0, a.length - 1);
    }
    private static void quickSort(Comparable[] a, int lo, int hi) {
    	if (hi <= lo)	return;
    	int m = partition(a, lo, hi);
    	quickSort(a, lo, m-1);
    	quickSort(a, m+1, hi);
    }
    private static int partition(Comparable[] a, int lo, int hi) {
    	int i = lo, j = hi + 1;
    	Comparable v = a[lo];
    	while(true) {
    		while (!less(v, a[++i]))	// 移动左侧指针i,找到需要交换的元素
    			if (i == hi)	break;
    		while (!less(a[--j], v))	// 移动右侧指针j,找到需要交换的元素
    			if (j == lo)	break;
    		
    		if (i >= j)	break;			// 当两个指针位置交叉时停止移动
    		
    		exch(a, i, j);			
    	}
    	
    	exch(a, lo, j);					// 把partition元素放到正确位置
    	return j;
    }
    
  • 相关阅读:
    STM32f469I discovery烧写demo例程
    dsp5509的中断系统
    DSP5509之采样定理
    DSP5509开发之FPGA接口
    mongodb学习之:安全和认证
    mongodb学习之:GridFS
    tornado之异步web服务一
    mongodb学习之:数据库命令以及固定集合
    docker: Dockerfile命令介绍
    mongodb学习之:聚合
  • 原文地址:https://www.cnblogs.com/smartjune/p/5402630.html
Copyright © 2011-2022 走看看