内排序小结
1.冒泡排序
<span style="font-size:18px;">#include <iostream> using namespace std; void BubbleSort(int array[],int length){ //排序次数比数组长度小1 bool flag=true; for(int i=0;i<length-1&&flag;i++){ //若flag为false,则退出循环 flag=false; //初始为fasle for(int j=0;j<length-i-1;j++){ if(array[j]>array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; flag=true; //如果发生了数据交换,则flag为true } } } } int main(){ int array[]={12,4,16,15,17,1,19,6}; BubbleSort(array,8); for(int i=0;i<8;i++){ cout<<array[i]<<" "; } cout<<endl; return 0; }</span>
2.简单选择排序
<span style="font-size:18px;">#include <iostream> using namespace std; void SimpleSelectSort(int array[],int length){ int min;//最小元素下标 //排序次数比数组长度小1 for(int i=0;i<length-1;i++){ min=i;//将当前下标定义为最小值下标 //一趟排序找到当前未排序记录关键字的最小值 for(int j=i+1;j<length;j++){ if(array[min]>array[j]) min=j; } if(min!=i){ //最小值不是当前i下标值,则交换 int temp=array[i]; array[i]=array[min]; array[min]=temp; } } } int main(){ int array[]={12,4,16,15,17,5,19,2}; SimpleSelectSort(array,8);</span><pre name="code" class="cpp"><span style="font-size:18px;"><span style="white-space: pre;"> </span>for(int i=0;i<8;i++){</span>cout<<array[i]<<" ";}cout<<endl;return 0;}
3.直接插入排序
#include <iostream> using namespace std; void DirectInsertSort(int array[],int length){ //排序次数比数组长度小1 for(int i=1;i<length;i++){ if(array[i]<array[i-1]){ //为true才需要真正排序 int temp=array[i]; //设置哨兵 int j=i-1; //寻找插入位置,当前j值的后一个位置是插入位置 while(j>=0&&temp<array[j]){ array[j+1]=array[j]; j--; } array[j+1]=temp; } } } int main(){ int array[]={12,4,16,15,17,5,19,2}; DirectInsertSort(array,8); for(int i=0;i<8;i++){ cout<<array[i]<<" "; } cout<<endl; return 0; }时间复杂度分析:最好时间复杂度O(n)、最坏和平均时间复杂度均为O(n^2)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。