#include<iostream>
using namespace std;
//直接插入排序
void InsertS(int A[],int n){
int i,j,m;//用m存储元素
for(i=0;i<n;i++){//遍历整个数组
if(A[i]>A[i+1]){//判断数组中前后两位数大小
m=A[i+1];//将m作为比较量
for(j=i;m<A[j];j--){//j用来从后往前遍历
swap(A[j],A[j+1]);//m比前面位置小则交换
}
}
}
}
//折半查找
void M_InserS(int A[],int n){
int i,j,low,high,mid,x;
for( i=1;i<=n;i++){
x=A[i];
low=1;
high=i-1;
while(low<=high){
mid=(low+high)/2;
if(A[mid]>x){
high=mid-1;
}else{
low=mid+1;
}
}
for(j=i-1;j>=high+1;--j){
swap(A[j+1],A[j]);
}
}
}
void shellS(int A[],int n){
int dk,i,j,x;
for(dk=n/2;dk>=1;dk=dk/2){//步长变化
for(i=dk+1;i<=n;++i){
if(A[i]<A[i-dk]){
x&
C++交换类排序:希尔排序,直接插入排序,折半插入排序
最新推荐文章于 2023-03-29 22:30:17 发布