希尔排序 C语言版
来源:互联网 发布:电脑装机软件大全 编辑:程序博客网 时间:2024/06/10 05:56
#include <stdio.h>
void shellInset(int a[],int n,int bk);
void shellsort(int a[],int n);
int main(){
int i,n,a[100];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
shellsort(a,n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void shellsort(int a[],int n){
int bk;
bk=n/2;
while(bk>=1){
shellInset(a,n,bk);
bk=bk/2;
}
}
void shellInset(int a[],int n,int bk){
int i,j,x;
for(i=bk;i<n;i++){
if(a[i-bk]>a[i]){
j=i-bk;
x=a[i];
a[i]=a[i-bk];
while(x<a[j]){
a[j+bk]=a[j];
j-=bk;
}
a[j+bk]=x;
}
}
}
void shellInset(int a[],int n,int bk);
void shellsort(int a[],int n);
int main(){
int i,n,a[100];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
shellsort(a,n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void shellsort(int a[],int n){
int bk;
bk=n/2;
while(bk>=1){
shellInset(a,n,bk);
bk=bk/2;
}
}
void shellInset(int a[],int n,int bk){
int i,j,x;
for(i=bk;i<n;i++){
if(a[i-bk]>a[i]){
j=i-bk;
x=a[i];
a[i]=a[i-bk];
while(x<a[j]){
a[j+bk]=a[j];
j-=bk;
}
a[j+bk]=x;
}
}
}
0 0
- 希尔排序(C语言版)
- 希尔排序c语言版
- 希尔排序 C语言版
- 希尔排序(C语言版)
- 经典排序——希尔排序——C语言版
- 排序算法 C语言版
- 快速排序C语言版
- 归并排序 --- C语言版
- 快速排序C语言版
- 归并排序C语言版
- 选择排序(C语言版)
- 归并排序(C语言版)
- 计数排序(C语言版)
- 堆排序(C语言版)
- 快速排序C语言版
- 冒泡排序 C语言版
- 快速排序 C语言版
- 堆排序 C语言版
- Android手势密码实现方案
- 猴子吃桃问题
- 快速排序 C语言版
- 关于Flash全屏的几种方法
- Ubuntu14.04安装 error:no such partition
- 希尔排序 C语言版
- android SharedPreferences的一般用法(存取清删)
- NP-Hard问题和NP-Complete问题
- 远程桌面无法使用剪切板的解决方法
- Servlet创建的时机及方式
- 用ue4构建第一个房屋
- 直接插入排序 C语言版
- IOS中实现Lable点击事件
- HibernateDaoSupport和HibernateTemplate的区别和联系