数据结构练习:自写的想法写归并排序 2020.11.20

简介: 数据结构练习:自写的想法写归并排序 2020.11.20


#include <iostream>
#include<vector>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void merge_short(vector<int> &q,int l,int r);
void merge_short(vector<int> &q,int l,int r) 
{
  int mid=(l+r)/2;
  if(l==r)
    return;
  int left=l,right=r,i,r2=mid+1; 
  merge_short(q,l,mid);
  merge_short(q,mid+1,r);
  static vector<int> w;
  w.clear();
  //将较小的数据存放在临时数组中 
  while(l<=mid&&r2<=r)
  {
    if(q[l]<=q[r2])
    {
      w.push_back(q[l++]);
    }
    else
    {
      w.push_back(q[r2++]);
    }
  }
  while(l<=mid)w.push_back(q[l++]);//将l到r的剩余数据存储到w中 
  while(r2<=r)w.push_back(q[r2++]);
  for(i=left;i<=mid;i++)//将w中排好序的数据填充到原数组中 
  {
    q[i]=w[i-left];
  }
  for(int j=mid+1;j<=right;j++,i++)
  {
    q[j]=w[i-left];
  }
  return;
}
int main(int argc, char** argv) {
  vector<int> a;
  int i=0,n;
  cin>>n;
  for(i=0;i<n;i++)
  {
    int b;
    cin>>b;
    a.push_back(b);
  }
  merge_short(a,0,a.size()-1);
  for(i=0;i<a.size();i++)
  {
    printf("%d  ",a[i]);
   } 
  return 0;
}


相关文章
【数据结构】红黑树——领略天才的想法
【数据结构】红黑树——领略天才的想法
|
2月前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
48 1
|
2月前
|
算法
数据结构与算法-归并排序
数据结构与算法-归并排序
21 2
|
2月前
|
搜索推荐
深入理解数据结构第六弹——排序(3)——归并排序
深入理解数据结构第六弹——排序(3)——归并排序
18 1
|
2月前
|
存储 算法 搜索推荐
【数据结构】归并排序的非递归写法和计数排序
【数据结构】归并排序的非递归写法和计数排序
|
3月前
|
存储 搜索推荐 算法
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
|
2月前
|
算法 C语言
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
18 0
|
3月前
|
人工智能 算法 搜索推荐
数据结构——lesson12排序之归并排序
数据结构——lesson12排序之归并排序
|
3月前
|
算法 数据可视化 搜索推荐
[数据结构]———归并排序
[数据结构]———归并排序
|
3月前
|
算法 索引
【数据结构与算法】:非递归实现快速排序、归并排序
上篇文章我们详细讲解了递归版本的快速排序,本篇我们来探究非递归实现快速排序和归并排序
【数据结构与算法】:非递归实现快速排序、归并排序