排序算法-C++实现:插入排序,冒泡排序
来源:互联网 发布:腾讯云域名和ip绑定 编辑:程序博客网 时间:2024/06/10 18:36
直接插入排序:
整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序
void InsertSort(int arr[],int n){ //遍历数组 for(int i=1;i<=n;i++){ //i-1是有序数组的长度,i是需要插入的元素 for(int j=i;j>0;j--){ if(arr[j]<arr[j-1]){ int temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; }//将第i个元素和有序区最后一个比较,若小于,则往前插入 } }}
冒泡排序:比较相邻的元素,如果反序则交换,也分有序区和无序区,初始时,有序区为空,所有元素都在无序区,经过第一趟后能找出最大的元素,然后重复
Void BubbleSort(int arr[],int n){ //遍历整个数组,注意i只能到n-2 for(int i=0;i<n-1;i++){ //除去前i次遍历得到的最大值,i次遍历得到一个最大值,在末尾 for(int j=0;j<n-1-i;j++){ //最大值交换到后面 if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }}
快速排序:首先选取一个轴值(pivot,基准值),将待排序记录划分成独立的两部分,左轴的元素小于轴值,右侧的大于,然后递归,直到整个序列有序
void Qsort(int a[], int low, int high){ if(low >= high) { return; } int first = low; int last = high; int key = a[first];/*用字表的第一个记录作为枢轴*/ while(first < last) { while(first < last && a[last] >= key) { --last; } a[first] = a[last];/*将比第一个小的移到低端*/ while(first < last && a[first] <= key) { ++first; } a[last] = a[first]; /*将比第一个大的移到高端*/ } a[first] = key;/*枢轴记录到位*/ Qsort(a, low, first-1); Qsort(a, first+1, high);}
阅读全文
1 0
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- 冒泡排序算法,插入排序
- 冒泡排序、选择排序、插入排序 算法实现
- java实现冒泡排序,选择排序,插入排序算法详解
- js实现排序算法(冒泡排序,直接插入排序)
- 排序算法-C++实现:插入排序,冒泡排序
- 排序算法(C实现)------ 冒泡排序
- 排序算法C++&&Python实现---冒泡排序
- 冒泡排序、插入排序、选择排序--C语言实现
- c语言实现选择排序、冒泡排序、插入排序
- Objective-C实现冒泡,选择,插入,快速排序算法
- 排序算法:冒泡排序&插入排序
- 【算法】插入排序/冒泡排序/选择排序
- GitLab v9.3.0-rc5 发布,代码托管平台
- 接口功能测试策略(分类执行)
- webpack的基础用法
- 有关Activity样式 、状态栏透明、屏幕亮度问题应用场景及其总结
- react native 使用setInterval构建计时器demo
- 排序算法-C++实现:插入排序,冒泡排序
- 看代码学编程之js高级语法
- Netscaler 之Load Blancing
- [Mac OS/iOS]反汇编工具Hopper分析Crash Log
- PHP面向对象——继承(个人笔记)
- 微服务架构实践之邮件通知系统改造
- Dumpzilla工具第615行bug的解决办法
- C++ 线程
- 美团A轮 合并回文子串 【dp】