【原创】自己写的几个排序算法
2021/4/12 12:29:41
本文主要是介绍【原创】自己写的几个排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<iostream> using namespace std; /*交换*/ void swap(int *x,int *y){ int temp; temp=*x; *x=*y; *y=temp; } /*打印*/ void print(int *a,int length){ int i; for(i=0;i<length;i++) cout << *(a+i) << " "; cout<<endl; } /*起泡排序*/ void sort_bubble(int *a,int length){ int i,j; for(i=0;i<length-1;i++){//外层循环,控制循环比较趟数 for(j=0;j<length-1-i;j++){//内层循环,控制比较位置 if(*(a+j)>*(a+j+1))//判断是否符合交换规则 swap(a+j,a+j+1); } } print(a,length); } /*选择排序*/ void sort_select(int *a,int length){ int i,j,k; for(i=0;i<length-1;i++){//外层循环,控制每一趟起始位置 for(j=i+1;j<length;j++){//内层循环,控制每趟循环比较次数 if(*(a+i)>*(a+j))//判断是否符合交换规则 swap(a+i,a+j); } } print(a,length); } /*归并排序细节*/ void merge(int *a,int first,int middle,int last){ int n=0; int i=first,j=middle+1; int b[last+1];//数组b暂存排好序的元素 while(i<=middle&&j<=last){ if(a[i]<a[j]) b[n++]=a[i++]; else b[n++]=a[j++]; } while(i<=middle) b[n++]=a[i++]; while(j<=last) b[n++]=a[j++]; int k; for(k=first;k<first+n;k++)//难点、易错点 a[k]=b[k-first]; } /*归并排序主体*/ void mergesort(int *a,int first,int last){ if(first<last){ int middle=(first+last)/2; mergesort(a,first,middle); mergesort(a,middle+1,last); merge(a,first,middle,last); } } /*归并排序*/ void sort_merge(int *a,int first,int last){ mergesort(a,first,last); print(a,last+1); } /*快速排序细节*/ void quicksort(int *a,int low,int high){ int first=low; int last=high; int key=a[low];//哨兵 if(low>=high)//如果low>=high说明排序结束了 return; while(low<high){//该while循环结束一次表示比较了一轮 while(low<high&&key<=a[high]) --high;//向前寻找 if(key>a[high]){ swap(&a[low],&a[high]); ++low; } while(low<high&&key>=a[low]) ++low;//向后寻找 if(key<a[low]){ swap(&a[low],&a[high]); --high; } } quicksort(a,first,low-1); //用同样的方式对分出来的左边的部分进行同上的做法 quicksort(a,low+1,last); //用同样的方式对分出来的右边的部分进行同上的做法 } /*快速排序*/ void sort_quick(int *a,int low,int high){ quicksort(a,low,high); print(a,high+1); } /*主函数*/ int main(){ int a[]={62,41,51,99,79,13,54,53,30,73}; int i,j,length; length=sizeof(a)/sizeof(a[0]); //sort_bubble(a,length); //sort_select(a,length); //sort_merge(a,0,length-1); sort_quick(a,0,length-1); return 0; }
这篇关于【原创】自己写的几个排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-08如何在敏捷项目中实现高效测试?
- 2024-07-08用户故事一定要有 “So that...” 吗?
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt