插入排序

void InsertSort(int arr[], int length)    //无哨兵的插入排序
{for(int i=1; i<length; i++){if(arr[i] < arr[i-1]){int temp = arr[i];for(int j=i-1; j>=0 && arr[j]>temp; j--){arr[j+1] = arr[j];}arr[j+1] = temp;}}
}void InsertSort(int arr[], int length)   //有哨兵的插入排序
{for(int i=1; i<=length; i++){if(arr[i] < arr[i-1]){arr[0] = arr[i];for(int j=i-1; arj[j]>arr[0]; j--){arr[j+1] = arr[j];}arr[j+1] = arr[0];}}
}

希尔排序

void shell_sort(int arr[], int length)
{int d = length / 2;while(d > 0){for(int i=d; i<length; i++){int temp = arr[i];int j = i - d;while(j >=0 && arr[j] > temp){arr[j+d] = arr[j];j -= d;}arr[j+d] = temp;}d /= 2;}
}

选择排序

void SelectSort(int arr[], int length)    //简单选择排序
{for(int i=0; i<length-1; i++){k = i;for(int j=i+1; j<length; j++)   //从后面选择一个最小的记录 {if(arr[j] < arr[k])k = j;}if(k != i)    //与第i个记录交换 swap(arr[i], arr[k]);}
}

冒泡排序

void Bubble_Sort1(int arr[], int length)     //将小元素冒泡到最前面,首先操作小元素
{for(int i=0; i<length-1; i++){for(int j=i+1; j<length; j++){if(arr[j] < arr[i])swap(arr[i], arr[j]);}}
} void Bubble_Sort2(int arr[], int length)
{for(int i=0; i<length; i++){for(int j=0; j<legnth-1-i; j++){if(arr[j] > arr[j+1])swap(arr[j], arr[j+1]);}}
}void Bubble_Sort3(int arr[], int length)
{int left = 0;int right = length - 1;while(left < right){for(int i=left; i<right; i++)if(arr[i] > arr[i+1])swap(arr[i], arr[i+1]);--right;for(int j=right; j>left; j--)if(arr[j] < arr[j-1])swap(arr[j], arr[j-1]);++left;}
}

快速排序

int partition(int* arr, int low, int high)
{int pivo = arr[low];while(low < high){while(low < high && arr[high] >= pivo)high--;arr[low] = arr[high];while(low < high && arr[low] <= pivo)low++;arr[high] = arr[low];}arr[low] = pivo;return low;
}void qsort(int* arr, int low, int high)    //快排(递归)
{if(low < high){int index = partition(arr, low, high);qsort(arr, low, index-1);qsort(arr, index+1, high);}
}void qsort_no_recursive(int* arr, int low, int high)   //快排 (非递归)
{int pivo = partition(arr, low, high);stack<int> s;if(pivo - 1 > low){s.push(low);s.push(pivo-1);}if(pivo + 1 < high){s.push(pivo+1);s.push(high);}while(!s.empty()){high = s.top();s.pop();low = s.top();s.pop();int index = partition(arr, low, high);if(index - 1 > low){s.push(low);s.push(index - 1);}if(index + 1 < high){s.push(index + 1);s.push(high);}}
}

归并排序

void Merge(int arr[], int low,int mid, int high)
{int i = low, j = mid+1; int k = 0;int* temp = (int*)malloc((high - low + 1) * sizeof(int));while(i <= mid && j <= high){if(arr[i] < arr[j])    //进行排序存入动态分配的数组中 temp[k++] = arr[i++];elsetemp[k++] = arr[j++];}while(i <= mid)      //如果前一半还有未处理完的数据,按顺序移入动态分配的数组中 temp[k++] = arr[i++];while(j <= high)     //如果后一半还有未处理完的数据,按顺序移入动态分配的数组中 temp[k++] = arr[j++];for(i=low, j=0; i<=high; i++)arr[i] = temp[j++];free(temp);
}void Msort(int arr[], int low, int high)
{if(low < high){int mid = (low + high) >> 1;Msort(arr, low, mid);Msort(arr, mid+1, high);Merge(arr, low, mid, high);}
}

堆排序

void HeapAdjust(int arr[], int s, int m)
{int temp = arr[s];for(int i=2*s; i<=m ; i*=2){if(i < m && arr[i] < arr[i+1])i++;if(temp >= arr[i])break;arr[s] = arr[i];s = i;}arr[s] = temp;
} void HeapSort(int arr[], int length)
{for(int i=length/2; i>=0; i--)HeapAdjust(arr, i, length-1);for(int i=length-1; i>0; i--){swap(arr[i], arr[0]);HeapAdjust(arr, 0, i-1);}
}

作者:鼠标CS
来源:CSDN
原文:https://blog.csdn.net/hubeidaxuesanqi3012/article/details/65934951
版权声明:本文为博主原创文章,转载请附上博文链接!

各种插入函数收集整理相关推荐

  1. matlab中fval函数,收集整理Matlab中的linprog函数使用说明 | 学步园

    linprog函数是用来求解线性规划问题,其中,f,x,b,beq,lb,ub为向量,A,Aeq为矩阵. a).x=linprog(f,A,b) 功能:求解最小化问题:min f*x,条件:A*x≤ ...

  2. php : 收集整理的非常有用的函数

    项目中经常会需要一些让人头疼的函数,作为开发者应该整理一个自己的函数库,在需要之时复制过来即可.以下是收集整理数十个PHP项目中常用的函数 1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用 ...

  3. 自己收集整理的微软错误代码大全(中文和英文)

    自己收集整理的微软错误代码大全,分别为中文和英文部分,供广大软件开发人员共勉.                  微软错误代码 2.1  中文 0 操作成功完成. 1 功能错误. 2 系统找不到指定的 ...

  4. Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)

    用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件.慢慢持续收集整理....... 目录 一.Wordpress模板主题中fu ...

  5. OC swift 一些常用第三方收集整理 (第三方集合)

    整理了Xcode好用的插件,包括OC和Swift,信息更详细和完整 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件. SVPullToRefresh– 下拉刷新控件. ...

  6. 2020年最好用的6款内容收集整理利器,打造个人/团队知识库

    下文为大家盘点2020年6款内容收集整理利器,打造个人/团队知识库用这些就对建议收藏! 1.Baklib 网址:http://d5wz.cn/mciz 这款工具的特点是易于分享,使用Baklib编辑收 ...

  7. 122个常见问题收集整理(FLASH初学者参见)

    122个常见问题收集整理(FLASH初学者参见) 说明:该部分整体为一些基本的常见问题的收集,不一定做到完整,尽力为初学者解决必要的常见问题,至于错误的地方请提出以便修改.该整理贴版权归闪吧论坛所有, ...

  8. 收集整理 GitHub 上高质量、有趣的开源项目,并将他们进行归类

    Awesome Github REPO Awesome GitHub Repo 会收集整理 GitHub 上高质量.有趣的开源项目,并将他们进行归类.值得注意的是,不是简单的按照编程语言来分类,而是按 ...

  9. SAP PM 设备维护事务码收集整理

    SAP PM 设备维护事务码收集整理,留存备查,总有一款适合你 . 事务码 描述 IBI2 Plant Maintenance Batch Input 设备维护批输入 IBIP PM: Batch I ...

最新文章

  1. 线性回归预测PM2.5值
  2. 服务监控-URL接口监控
  3. ubuntu16.04中安装tensflow教程
  4. 计算机网络部分简答题
  5. Spark入门(十三)之分组求平均值
  6. 华为配备鸿蒙系统的手机,华为P50/新平板双双来袭!全球首发鸿蒙系统:配置都非常强悍...
  7. data URI scheme及其应用
  8. 关于类成员函数中访问同类对象的私有成员
  9. java如何处理tcp异常断开_(转)TCP连接异常断开检测
  10. 使用si ob 导出,导入部分表
  11. Jenkins 多服务器自动部署,发布到多台服务器
  12. SVG使用CSS层叠样式表
  13. 免费下载《程序员面试宝典》.pdf
  14. 【apiPost】-工具
  15. CADD课程学习(2)-- 靶点晶体结构信息
  16. Flutter 和 Dart 开发中一些技巧和坑点填坑指南详解
  17. 计算机水平cet2是什么等级,英语cet2等级考试试题
  18. C++中Duration、Time_point和Clocks
  19. 你的梦想是什么?灿星文化眼含热泪只想IPO
  20. 看了第一句,有人就哭了?

热门文章

  1. Java-Collection集合和Map集合总结
  2. 渗透测试国内外研究_【技术探究】冰箱门封技术现状与研究进展
  3. 将cmder安装到windows xp上
  4. 翻译德文到中文,北京德文翻译哪家好?
  5. Android SDK Android NDK 官方下载地址(zt)
  6. 二次型化标准形的三种方法
  7. 2_计算机网络_数据链路层-交换机-以太网-vlan-trunk
  8. Gazebo仿真平台模型搭建与修改
  9. docker白话版(一)简介+使用命令
  10. 第九章-项目资源管理