1. 应用场景

a.有两个长度分别为m和n的未排序int数组A和B
b.请写一个func将两个数组的进行排序将最小的m个int以从小到大的顺序存储在数组A, 最大的n个数以从小到到的顺序存储在数组B
注意:m, n的长度可能很大所以请注意空间使用情况

例子:
转换前:
a := [98, 67, 91, 99, 13]
b := [97, 35, 88]

转换后:
a := [13, 35, 67, 88, 91]
b := [97, 98, 99]

2. 使用快速排序,把两个组成当成一个数组。

#include <random>int m = 0;int n = 0;int getValue(int A[], int B[], int i) {if (i < 0)i = 0;if (i >= m + n)i = m + n - 1;if (i < m)return A[i];elsereturn B[i - m];}void setValue(int A[], int B[], int i, int value) {if (i < 0)i = 0;if (i >= m + n)i = m + n - 1;if (i < m)A[i] = value;elseB[i - m] = value;}void swap(int A[], int B[], int low, int high) {int a = getValue(A, B, low);int b = getValue(A, B, high);setValue(A, B, low, b);setValue(A, B, high, a);}int parititionArray(int A[], int B[], int low, int high) {int pivot_idx = low + rand() % (high - low + 1);  // randomly select// move pivot to beginswap(A, B, pivot_idx, low);int pivot = getValue(A, B, low);while (low < high) {while (low < high && getValue(A, B, high) >= pivot) {--high;}setValue(A, B, low, getValue(A, B, high));while (low < high && getValue(A, B, low) <= pivot) {++low;}setValue(A, B, high, getValue(A, B, low));}setValue(A, B, low, pivot);return low;}void quickSortArray(int A[], int B[], int low, int high){if (low < high) {int pivot = parititionArray(A, B, low, high);quickSortArray(A, B, 0, pivot - 1);quickSortArray(A, B, pivot + 1, high);}}void quickSort() {int a[] = { 98, 67, 391, 99, 13, 130 };int b[] = { 97, 35, 88, 120, 140 };m = sizeof(a) / sizeof(int);n = sizeof(b) / sizeof(int);quickSortArray(a, b, 0, m + n - 1);int i = 4;}

【引用】

[1] 代码quickSort.h

排序 (2)快速排序-多个数组相关推荐

  1. 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...

  2. 快速排序: 使用快速排序算法对数组进行排序

    快速排序: 使用快速排序算法对数组进行排序 题目 一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序) 输入描述: 输入为两行. 第一行一个整数n(1 ...

  3. JS-排序详解:冒泡排序、选择排序和快速排序

    JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...

  4. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  5. 9个元素换6次达到排序序列_(算法四)高级排序(快速排序)

    1.快速排序 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速 ...

  6. 排序算法 —— 快速排序

    快速排序算法介绍 划分问题:把数组的各个元素重排后分成左右两个部分,使得左边任意元素都小于或等于右边任意元素. 递归求解:把左右两部分分别排序. 快速排序代码 #include <iostrea ...

  7. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  8. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  9. JAVA最常用的排序_冒泡排序、选择排序、快速排序

    排序算法是Java面试题中最常考的,笔试题.机试题都会有,所有掌握最常用的排序是必须. 在效率中快速排序是这几种效率最高的. 代码验证过,可以直接复制测试运行. 代码如下: package com.l ...

  10. 希尔排序、快速排序、归并排序的实现分析以及时间复杂度

    高级排序 希尔排序 快速排序 归并排序 希尔排序 希尔排序是插入排序的一种,又称"缩小增量排序",是插入排序算法的一种更高效的改进版本. 我在另一篇文章中说插入排序的时候,会有一个 ...

最新文章

  1. 企业网站Solaris环境DNS服务器创建
  2. 接口自动化框架(java)--2.接口用例POST请求,参数配置
  3. POJ1789简单小生成树
  4. VJ 1033 整数分解(版本2)
  5. poj 1696(极角排序)
  6. Spring boot配置文件两种方式
  7. 神经网络入门回顾(感知器、多层感知器)
  8. 1.几大开发模型区别与联系
  9. java如何测controller层_用MockMvc对Spring mvc中的controller层进行单元测试
  10. Python3安装turtle提示错误:Command python setup.py egg_info failed with error code 1
  11. 数据类型转换——Python
  12. unbuntu 18.04 LTS 版 安装Samba服务器
  13. python源码剖析, 第0部分 -- 编译python
  14. 智慧交通:数字孪生三维可视化大屏管控运维平台
  15. Mac屏幕显示怎么缩小放大?Mac屏幕缩放教程
  16. JS (GMT)与普通时间格式的互相转换,JS转GMT格式时间
  17. 想要吸引女性粉丝?三种短视频类型可尝试,点赞关注少不了
  18. 日语中电脑发出奇怪的声音是如何表达的
  19. 关于arduino的各种网站
  20. 多机型手机外观清洁与检测设备设计

热门文章

  1. 网络:url?uri?
  2. Android --- Unable to resolve dependency for ‘:app@debug/compileClasspath‘: Could not resolve com.a
  3. 蓄电池的容量及内阻测试
  4. 未来数据中心运营将靠人工智能和机器学习
  5. Python之woe:woe库的简介、安装、使用方法之详细攻略
  6. 成功解决ModuleNotFoundError: No module named ‘sklearn.grid_search‘
  7. NLP:利用DictVectorizer对使用字典存储的数据进行特征抽取与向量化
  8. DL之BigGAN:利用BigGAN算法实现超强炸天效果——画风的确skr、skr、skr,太特么的skr了
  9. Hyperopt 入门指南
  10. ubuntu160.4+anaconda3 +tensorflow1.140 +keras2.2.5安装