电子商务网站开发文档在线qq登录无需下载
news/
2025/9/27 16:47:34/
文章来源:
电子商务网站开发文档,在线qq登录无需下载,创意设计包装,做门户网站的意义在哪选择、插入、冒泡三种算是最典型的排序算法了#xff0c;空间复杂度都为O(1) 选择排序时间复杂度跟初始数据顺序无关#xff0c;O(n2)#xff0c;而且还不稳定; 插入排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2)#xff0c;稳定 冒泡排序时间复杂度跟初始数据顺序有…选择、插入、冒泡三种算是最典型的排序算法了空间复杂度都为O(1) 选择排序时间复杂度跟初始数据顺序无关O(n2)而且还不稳定; 插入排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2)稳定 冒泡排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2)稳定 三种算法中对于大量随机数所需时间插入选择冒泡。 // MySort.h: interface for the MySort class.
#include iostream.htemplateclass T
void swap(T a,T b)
{T ca;ab;bc;
}templateclass T
void print(T a[], int n ,int i){ cout第i1 趟 : ; for(int j 0; j10; j){ couta[j] ; } coutendl;
} templateclass T
void selectSort(T a[],int n) //选择排序
{int i,j,k;for(i0;in-1;i){ki;for(ji1;jn;j){if(a[j]a[k])kj;}if(k!i)swap(a[i],a[k]); }
}templateclass T
void selectSort2(T a[],int n) //二元选择排序
{int i,j,min,max;for (i1;i n/2;i) // 做不超过n/2趟选择排序 { min i; max i ; //分别记录最大和最小关键字记录位置 for (j i; jn-i; j) { if (a[j] a[max]) { max j ; continue ; } if (a[j] a[min]) min j ; } //该交换操作还可分情况讨论以提高效率 swap(a[i-1],a[min]);if(max!i)swap(a[n-i],a[max]);#ifdef _DEBUGprint(a,n,i-1);
#endif}
}templateclass T
void insertSort(T a[],int n) //插入排序
{int i;for(i1;in;i){if(a[i]a[i-1]){int j i-1; T x a[i]; //复制为哨兵即存储待排序元素 a[i] a[i-1]; //先后移一个元素while(j0 xa[j]) //查找在有序表的插入位置 { a[j1] a[j]; //元素后移 j--; } a[j1] x; //插入到正确位置 } }}
templateclass T
void bubbleSort(T a[],int n) //冒泡排序
{
/*
int i,j;
for(i0; in-1; i) {
for(j0; jn-i-1; j) {
if(a[j] a[j1])
{
swap(a[j],a[j1]);
}
}
#ifdef _DEBUG
print(a,n,i);
#endif
} */bool bSwaped true;int i,j;int lastSwapPos, lastSwapPos_temp 0; for(i0; in-1; i) { bSwaped false; lastSwapPos lastSwapPos_temp; for(jn-1; jlastSwapPos; j--) { if(a[j-1] a[j]) { swap(a[j],a[j-1]); bSwaped true; lastSwapPos_temp j - 1; } } // 如果上一次扫描没有发生交换则说明数组已经全部有序退出循环 if(!bSwaped)break;} } 转载于:https://www.cnblogs.com/nkzhangkun/p/3990923.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919684.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!