用c语言实现冒泡排序,选择排序,快速排序
2023-06-13 09:15:00 时间
代码如下所示:
复制代码代码如下:
/*
*
voidBubbleSort(intarr[],intn)
{
inttemp;
for(inti=0;i<n-1;i++)
{
for(intj=i+1;j<n;j++)
{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
/*
*
voidChooseSort(intarr[],intn)
{
inttemp,k;
for(inti=0;i<n-1;i++)
{
k=i;
for(intj=i+1;j<n;j++)
{
if(arr[k]>arr[j])
{
k=j;
}
}
if(k!=i)
{
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
}
/*
*
voidq_sort(intnumbers[],intleft,intright)
{
intpivot,l_hold,r_hold;
l_hold=left;
r_hold=right;
pivot=numbers[left];
while(left<right)
{
while((numbers[right]>=pivot)&&(left<right))
{
right--;
}
if(left!=right)
{
numbers[left]=numbers[right];
left++;
}
while((numbers[left]<=pivot)&&(left<right))
{
left++;
}
if(left!=right)
{
numbers[right]=numbers[left];
right--;
}
}
numbers[left]=pivot;
pivot=left;
left=l_hold;
right=r_hold;
if(left<pivot)
{
q_sort(numbers,left,pivot-1);
}
if(right>pivot)
{
q_sort(numbers,pivot+1,right);
}
}
/*
*
voidquick_sort(int*x,intlow,inthigh)
{
inti,j,t;
if(low<high)/*要排序的元素起止下标,保证小的放在左边,大的放在右边。这里以下标为low的元素为基准点*/
{
i=low;
j=high;
t=*(x+low);/*暂存基准点的数*/
while(i<j)/*循环扫描*/
{
while(i<j&&*(x+j)>t)/*在右边的只要比基准点大仍放在右边*/
{
j--;/*前移一个位置*/
}
if(i<j)
{
*(x+i)=*(x+j);/*上面的循环退出:即出现比基准点小的数,替换基准点的数*/
i++;/*后移一个位置,并以此为基准点*/
}
while(i<j&&*(x+i)<=t)/*在左边的只要小于等于基准点仍放在左边*/
{
i++;/*后移一个位置*/
}
if(i<j)
{
*(x+j)=*(x+i);/*上面的循环退出:即出现比基准点大的数,放到右边*/
j--;/*前移一个位置*/
}
}
*(x+i)=t;/*一遍扫描完后,放到适当位置*/
quick_sort(x,low,i-1); /*对基准点左边的数再执行快速排序*/
quick_sort(x,i+1,high); /*对基准点右边的数再执行快速排序*/
}
}
//输出数组元素
voidoutArray(intarr[],intn)
{
for(inti=0;i<n;i++)
{
cout<<arr[i]<<"";
}
cout<<endl;
}
voidmain()
{
constintN=5;
intarr1[N]={4,3,5,2,1};
intarr2[N]={4,3,5,2,1};
intarr3[N]={4,3,5,2,1};
cout<<"Beforebubblesort"<<endl;
outArray(arr1,N);
BubbleSort(arr1,N);
cout<<"Afterbubblesort"<<endl;
outArray(arr1,N);
cout<<"/nBeforechooosesort"<<endl;
outArray(arr2,N);
ChooseSort(arr2,N);
cout<<"Afterchooosesort"<<endl;
outArray(arr2,N);
cout<<"/nBeforequicksort"<<endl;
outArray(arr3,N);
//q_sort(arr3,0,N-1);
quick_sort(arr3,0,N-1);
cout<<"Afterquicksort"<<endl;
outArray(arr3,N);
system("pause");
}
相关文章
- c语言输入4个整数要求按由小到大_c语言任意输入3个数从小到大排序
- c语言中图书管理系统_c语言图书管理系统排序
- C++11 语言特性之原始字符串(Raw String Literals)
- 数组 选择排序 c语言[通俗易懂]
- (c语言)选择排序法和冒泡排序法
- R语言中的颜色(三)-grDevice包
- 【R语言】数据框按两列排序
- 快速排序(Java语言实现)
- 【说站】c语言中回调函数的使用
- 【说站】c语言strcat_s函数的原理
- 【说站】c语言中static修饰局部静态变量
- 【测开技能】Java语言系列(十七)数组操作--遍历与排序
- w3c标准是什么_语言的特征主要包括什么
- 竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(2)模型工厂类
- 分别用冒泡法和选择法对10个整数排序_c语言数组从大到小冒泡排序
- python用冒泡法排序_数组冒泡排序c语言函数
- Go 语言推荐书籍(2023)
- 【原创】Java语言中内存的存储
- C/C++语言常用排序算法
- 中英双语多语言外贸企业网站源码系统 - HanCMS - 安装部署教程
- 跟着Nature学作图:R语言ggplot2山脊图添加辅助线/图例添加到左下角
- 跟着NaturePlants学作图:R语言ggplot2分组折线图完整示例
- 「多语言图像描述」最强评估基准XM3600来了!涵盖36种语言
- R语言-专题
- Skill语言实现将一个table中的坐标point(x,y)按照x和y进行从小到大排序的函数
- 甲骨文Java语言架构师:虚拟线程将会深刻影响大规模Java应用的并发机制
- 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )
- Go语言之旅[一]详解大数据
- 学习红帽Linux,踏上Linux之旅(红帽linux语言)
- go语言之变量详解编程语言
- c语言编程在Oracle平台上的实践经验(c oracle 编译)
- PHP中使用gettext来支持多语言的方法
- c语言快速排序算法示例代码分享