小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a
小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
c++常用的排序算法
//选择排序法SelectionSort(int arr[],int n)
template <typename T>void SelectionSort(T arr[],int n){int smallIndex; //表中最小元素的下标int pass,j; //用来扫描子表的下标T temp; //用来交换表元素的临时变量//pass的范围是0~n-2for (pass=0;pass<n-1;pass++){//从下标pass开始扫描子表smallIndex=pass;//j遍历整个子表arr[pass+1]到arr[n-1]for(j=pass+1;j<n;j++)//如果找到更小的元素,则将该位置赋值给smallIndexif(arr[j]<arr[smallIndex])smallIndex=j;//如果smallIndex和pass不在相同的位置//则将子表中的最小项与arr[pass]交换if(smallIndex!=pass){temp=arr[pass];arr[pass]=arr[smallIndex];arr[smallIndex]=temp;}}}
//双端选择排序算法函数deSelSort()的实现
template <typename T>void deSelSort(T arr[],int n){int smallIndex,largeIndex; //表中最小及最大元素的下标int leftPass=0,rightPass=n-1,i,j; //用来从表左边及右边扫描子表的下标 T temp; //用于交换元素的临时变量 while (leftPass<=rightPass){//从左边及右边开始扫描子表smallIndex=leftPass;largeIndex=rightPass;//j和i遍历整个子表arr[LeftPass]~arr[rightPass]for (i=leftPass+1;i<rightPass;i++)//如果找到更小的元素,则将该位置赋值给smallIndexif (arr[i]<arr[smallIndex])smallIndex=i;//如果smallIndex和leftPass不在相同的位置//则将子表中的最小项与arr[pass]交换if (smallIndex!=leftPass){temp=arr[leftPass];arr[leftPass]=arr[smallIndex];arr[smallIndex]=temp;}for (j=rightPass-1;j>leftPass;j--)if(arr[j]>arr[largeIndex])largeIndex=j;if(largeIndex!=rightPass){temp=arr[rightPass];arr[rightPass]=arr[largeIndex];arr[largeIndex]=temp;}//从两头收缩子表leftPass++;rightPass--;}}
temp=arr[rightPass];arr[rightPass]=arr[largeIndex];arr[largeIndex]=temp;}//从两头收缩子表leftPass++;rightPass--;}}
//自编冒泡法排序算法函数bubbleSort()的实现
template <typename T>int bubbleSort(T arr[],int n){bool exchanged=false; //是否发生交换int i,j; //用于遍历子表的下标T temp; //用于交换元素的临时变量 //开始遍历过程,以下标j构成子表,共有n-1个子表for (j=n-1;j>=0;j--) //j从后往前收缩n-1~0,以构成子表0~n-1,0~n-2,0~n-3..0~1{exchanged=false;for (i=0;i<j;i++) //遍历子表范围0~j{if (arr[i]>arr[i+1]){temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;exchanged=true;}}if (!exchanged) return n-j-1;//如果在一次遍历中没有发生交换,则表示已经 //排序好,中断遍历过程}return n-1-j;}
//冒泡法排序一般算法函数bubbleSortEx()的实现
template <typename T>int bubbleSortEx(T arr[],int n){int i,pass; //用于遍历子表的下标T temp; //用于交换元素的临时变量//开始遍历过程,以下标j构成子表,共有n-1个子表for (pass=0;pass<n;pass++) //pass从后往后扩大0~n-1,以构成子表0~n-1,0~n-2,0~n-3..0~1{for (i=0;i<n-pass;i++) //遍历子表范围0~n-pass{if (arr[i]>arr[i+1]){temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}}return pass;}
以上是“c++常用的排序算法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网其他教程频道!
--结束END--
本文标题: c++常用的排序算法有哪些
本文链接: https://www.lsjlt.com/news/233853.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0