多种排序算法c++(冒泡排序、直接插入排序、快排算法、直接选择、归并排序)
程序员文章站
2022-03-22 09:18:15
...
#include<iostream>
using namespace std;
void fn(int arr[],int n)//冒泡排序
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int m=arr[j];
arr[j]=arr[j+1];
arr[j+1]=m;
}
}
}
}
void insertfn(int arr[],int n)//直接插入排序
{
for(int i=1;i<n;i++)
{
int j=i;
while(j>0 && arr[j]<arr[j-1])
{
int m=arr[j];
arr[j]=arr[j-1];
arr[j-1]=m;
j--;
}
}
}
void choosefn(int arr[],int n)//直接选择排序
{
for(int i=0;i<n;i++)
{
int min=i;
for(int j=i+1;j<n;j++)
{
if(arr[j]<arr[min])
{
min=j;
}
}
int m=arr[i];
arr[i]=arr[min];
arr[min]=m;
}
}
int fastfn(int arr[],int left,int right)//快速排序
{
int flag=arr[left];
while(left<right)
{
while(arr[right]>=flag&&left<right) right--; //大于flag!!
if(right>left){
arr[left]=arr[right];
left++;
}
while(arr[left]<flag && left<right) left++;
if(right>left){
arr[right]=arr[left];
right--;
}
}
arr[left]=flag;
return left;
}
void quick(int arr[],int left,int right){
if(left<right){
int i=fastfn(arr,left,right);
quick(arr,left,i-1);
quick(arr,i+1,right);
}
}
//下面是归并排序
void organize(int a[],int first,int mid,int last,int temp[]){//合并两个数组到新数组
int i=first,j=mid+1;
int m=mid,n=last;
int k=0;
while(i<=m && j<=n){ //两数组按顺序放置
if(a[i]<=a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=m){ //防止有漏下的数组
temp[k++]=a[i++];
}
while(j<=n){
temp[k++]=a[j++];
}
for(i=0;i<k;i++) //将temp值传回去
a[first+i]=temp[i];
}
void organization(int a[],int first,int last,int tmp[]){
if(first<last){
int mid=(first+last)/2;
organization(a,first,mid,tmp); //左边有序
organization(a,mid+1,last,tmp); //右边有序
organize(a,first,mid,last,tmp);
}
}
void soto(int a[],int n) //归并排序
{
int *p = new int[n];
if(p==NULL) return;
organization(a,0,n-1,p);
delete[] p;
}
int main()
{
int arr[]={4,3,2,1};
int a[]={5,4,3,2,1};
//fn(arr,4);
//insertfn(arr,4);
//choosefn(arr,4);
//quick(arr,0,3);
soto(a,5);
for(int b=0;b<5;b++)
{
cout<<a[b]<<endl;
}
}
都能跑\(-_____-)/
上一篇: php怎么实现英文转小写
下一篇: win7下php如何安装curl扩展
推荐阅读
-
直接插入排序算法的C++实现
-
用Python代码实现插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序
-
C++算法之直接插入排序算法详解
-
Python算法-冒泡排序-选择排序-插入排序-快排-二叉树
-
排序算法——选择,插入,冒泡,希尔,快排,归并
-
Java——(排序算法)冒泡、选择、插入、快排、归并、希尔、基数
-
七大排序算法比较【冒泡、选择、插入、希尔、快排、归并,堆】
-
(代码+注释+动图+java)排序算法:冒泡,选择,插入,快排,归并,希尔
-
【数据结构与算法Python】排序与搜索_冒泡排序_选择排序_插入排序_快速排序_希尔排序_归并排序
-
直接插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 基数排序的算法分析和具体实现