订阅号做微网站,怎么知道网站是什么语言做的,室内设计项目概况案例,好看的网站页面选择、插入、冒泡三种算是最典型的排序算法了#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