快速排序1.2

  • 描述
  • 代码实现

描述

昨天的文章提到了参考点的选择是快速排序法的效率关键之一,在这边的快速排序法的轴选择方式更加快了快速排序法的效率。

代码实现

C++实现:

// QuickPartition.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
int partition(int[], int, int);
void quicksort(int[], int, int);
int main(void) {int number[MAX] = {0};int i, num;srand(time(NULL));printf("排序前:");for(i = 0; i < MAX; i++) {number[i] = rand() % 100;printf("%d ", number[i]);}quicksort(number, 0, MAX-1);printf("\n排序后:");for(i = 0; i < MAX; i++)printf("%d ", number[i]);printf("\n");return 0;
}
int partition(int number[], int left, int right) {int i, j, s;s = number[right];i = left - 1;for(j = left; j < right; j++) {if(number[j] <= s) {i++;SWAP(number[i], number[j]);}}SWAP(number[i+1], number[right]);return i+1;
}
void quicksort(int number[], int left, int right) {int q;if(left < right) {q = partition(number, left, right);quicksort(number, left, q-1);quicksort(number, q+1, right);}
}

Java实现:

package com.immunize.Arithmetic;/*** Quick排序1.2* * @author Mr IMMUNIZE**/
public class QuickPartition {public static void main(String[] args) {int[] arr = { 1, 3, 5, 2, 22, 13, 6, 78, 65 };QuickSort2(arr, 0, arr.length - 1);Print(arr);}public static int partition(int[] number, int left, int right) {int i, j, s, tmp;s = number[right];i = left - 1;for (j = left; j < right; j++)if (number[j] <= number[right]) {i++;tmp = number[i];number[i] = number[j];number[j] = tmp;}tmp = number[i + 1];number[i + 1] = number[right];number[right] = tmp;return i + 1;}public static void QuickSort2(int[] number, int left, int right) {int q;if (left < right) {q = partition(number, left, right);QuickSort2(number, left, q - 1);QuickSort2(number, q + 1, right);}}public static void Print(int[] number) {for (int i = 0; i < number.length; i++) {System.out.print(number[i] + " ");}System.out.println();}
}

20191014:快速排序1.2相关推荐

  1. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  2. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  3. 数据结构学习(十三)、快速排序

    基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...

  4. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  5. 快速排序的两种实现方法(c语言版本)

    经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...

  6. 【经典算法】快速排序

    与归并排序一样,快速排序使用也使用了分治的思想.下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q ...

  7. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

  8. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  9. 排序学习之---快速排序

    一.前言 快速排序是一种交换排序,它由C. A. R. Hoare在1962年提出. 二.算法思想 快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都 ...

最新文章

  1. 中国移动领取买卖将在2016年破万亿
  2. Ardino基础教程 3_流水灯
  3. jQuery——给元素添加父级的方法
  4. UVA 11149.Power of Matrix-矩阵快速幂倍增
  5. 作者:王文生,中国农业科学院农业信息研究所副所长、研究员。
  6. 手写 Object.create
  7. shell编程入门步步高(九、sed和awk)
  8. Transform.GetComponentsInChildRen()
  9. 情人节,给你们发点福利。
  10. Android Contacts(二)—— SMS 短信 与 Contacts 联系人关联
  11. 微软面试题 经典测试 (博弈论 经典案例)
  12. 官网为啥这么喜欢IE和Flash?
  13. 简述改变计算机桌面背景的方法,怎么设置和更改桌面背景
  14. 深度学习基础知识点【更新中】
  15. 德云一哥岳云鹏,准备录制河南和东方卫视节目,央视春晚还参加吗
  16. 4. ElasticSearch——aggregations聚合分析
  17. java的四种访问权限_Java四种访问权限
  18. FFmpeg 中的一些参数意义(tbr, tbn, tbc)
  19. 计算机视觉 国际著名研究机构
  20. 为什么Vue组件里面data必须是个函数

热门文章

  1. GitHub Action 有风险?!
  2. Entity Framework Core 实现全局查询过滤
  3. 怎么颈椎和秃头都扯上我,程序员:我太难了…
  4. 33 关 Python 游戏,测试你的爬虫能力到底及格不?
  5. 她拒绝麦肯锡 Offer,建立图片训练数据库,斯坦福 AI 实验室负责人 | 人物志
  6. 火速拿来用!对比 12,000 个 Vue.js 开源项目发现最实用的 TOP45!
  7. “小程序 · 云开发”重磅上线,让小程序开发更高效!
  8. 程序员,过了 40 岁,连 107 岁的 IBM 都不要我们了!
  9. 编程过度防御?只有缺乏自信的程序员才会这样做
  10. Stopping filebeat