冒泡,插入,归并,快排算法C++实现
来源:互联网 发布:linux项目新手 编辑:程序博客网 时间:2024/06/09 13:44
// sort_alogrithm.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>using namespace std;//冒泡排序void pubbleSort(vector<int>& nums){ int n=nums.size(); for(int i=0;i<n;++i){ for(int j=i;j<n;++j){ if(nums[i]>nums[j]){ int temp = nums[j]; nums[j]=nums[i]; nums[i]=temp; } } } for(int i=0;i<n;++i){ cout<<nums[i]<<" "<<endl; }} //insertSort void insertion_sort(vector<int>& nums){ int n=nums.size(); for(int j=1;j<n;++j){ int temp=nums[j]; int i=j-1; while(i>=0&&nums[i]>temp){ nums[i+1]=nums[i]; --i; } nums[i+1]=temp; } for(int i=0;i<n;++i){ cout<<nums[i]<<" "; }}//归并排序int min(int a,int b){ return a<b?a:b;}void merge_aux(vector<int>& nums,int i,int j){ if(i>=j) return; int mid = (i+j)/2; merge_aux(nums,i,mid); merge_aux(nums,mid+1,j); vector<int> temp(j-i+1); int m=i,n=mid+1,k=0; while(m<=mid||n<=j){ int first = m>mid? INT_MAX:nums[m]; int second = n>j?INT_MAX:nums[n]; if(first<second) ++m; else ++n; temp[k++]=min(first,second); } for(int m=0;m<k;++m){ nums[i+m]=temp[m]; }}void merge_sort(vector<int>& nums){ int n = nums.size(); merge_aux(nums,0,n-1); for(int i=0;i<n;++i){ cout<<nums[i]<<" "; }}//quick_sortint partition(vector<int>& nums,int i,int j){ int index = rand()%(j-i+1)+i; int val = nums[index]; nums[index]=nums[j]; nums[j]=val; int last=i; for(int m=i;m<=j;++m){ if(nums[m]<nums[j]){ int temp=nums[m]; nums[m]=nums[last]; nums[last]=temp; last++; } } nums[j]=nums[last]; nums[last]=val; return last;}void quick_aux(vector<int>& nums,int i,int j){ if(i<j){ int last = partition(nums,i,j); quick_aux(nums,i,last-1); quick_aux(nums,last+1,j); }}void quick_sort(vector<int>& nums){ quick_aux(nums,0,nums.size()-1);}int _tmain(int argc, _TCHAR* argv[]){ int a[]={1,3,4,5,67,5,4,3,4,56,67,54,3,4,5,65}; vector<int> test(a,a+16); //pubbleSort(test); // insertion_sort(test); merge_sort(test); return 0;}
0 0
- 冒泡,插入,归并,快排算法C++实现
- 排序算法--冒泡、插入、归并、快排
- 排序算法:快排,插入,希尔,归并,堆,选择,冒泡
- 冒泡、插入,快排、归并四种排序算法分析
- 常用排序算法(冒泡、选择、归并、快排、插入)
- 排序算法之二:冒泡、插入、希尔、快排、归并
- 常用的排序算法 插入-冒泡-选择-归并-快排
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- 常见排序算法C++实现(冒泡,直接插入,希尔,堆,归并,简单选择,快排)
- 排序及选择算法的java实现(一)选择、冒泡、插入、希尔、归并、快排
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- 常用排序算法简介与java实现(冒泡、插入、选择、希尔、归并、快排)
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 常用排序算法的js实现(冒泡、选择、插入、归并、希尔、快排)
- 冒泡,选择,插入,归并,快排
- 算法复习-归并、快排、插入、堆-c++实现
- 各种排序算法(冒泡、选择、快排、插入、希尔、堆排、归并、计数、基数)
- 各类排序C++实现(冒泡,选择,插入,快排,归并,堆排)
- java泛型详解
- curosr 查询之查询本地电话
- Activity启动模式相关总结
- VIM的安装和个性配置
- python 中文编码声明
- 冒泡,插入,归并,快排算法C++实现
- c语言自增运算的汇编探究
- private关键字的使用
- Ubuntu下搭建Web服务器(Apache+PHP+MySQL)及初始配置
- CoordinatorLayout 实现了Material Design中的滚动效果
- java IO流面试题和选择题
- 1044 - Palindrome Partitioning(记忆化DP)
- Linux core文件
- linux下svn相关命令