希尔排序Linux下c 实现
来源:互联网 发布:java生成xml文件 编辑:程序博客网 时间:2024/04/28 10:57
这次,我们谈论下希尔排序,希尔排序也叫递减增量排序算法。步长也是影响希尔排序的一个重要因素,我们这里主要用Marcin Ciura设计的步长。关键代码如下:
1、希尔排序头文件:shellSort.h
#ifndef SHELLSORT_H#define SHELLSORT_Hextern void shellSort(int * pArr, const int length);#endif
2、希尔排序源文件:shellSort.c
#include "shellSort.h"void shellSort(int * pArr, const int length){ const int pInc[9]={1,4,10,23,57,132,301,701,1750}; int len=sizeof(pInc)/sizeof(int); int i,k,j,tmp; int inc; k=0; while(*(pInc+k)<length && k<=len) { k++; } while(--k>=0) { inc=*(pInc+k); for(i=inc; i< length; i++) { tmp=*(pArr+i); j=i; while(j>=inc && *(pArr+j-inc)>tmp) { *(pArr+j)=*(pArr+j-inc); j=j-inc; } *(pArr+j)=tmp; } }}
3、main头文件:main.h
#ifndef MAIN_H#define MAIN_H#include<stdio.h>#include "shellSort.h"int main(void);void showArr(const int *pArr, const int length);void initRandomArr(int *pArr, const int length);#endif
4、main源文件:main.c
#include "main.h"int main(void){ printf("Input array length:\n"); int length; scanf("%d", &length); if(length<0) { printf("Array length must be larger 0\n"); return 1; } int arr[length]; initRandomArr(arr, length); printf("Get random array :\n"); showArr(arr, length); shellSort(arr, length); printf("shell sort result:\n"); showArr(arr, length); return 0;}void showArr(const int *pArr, const int length){ int i; for(i=0; i<length; i++) { printf("%d ", *(pArr+i)); } printf("\n");}void initRandomArr(int *pArr, const int length){ int i; srand(time(NULL)); for(i=0; i< length; i++) { *(pArr+i)=rand()%1000; }}
5、编译:
[root@localhost shellSort]$ gcc -c shellSort.c[root@localhost shellSort]$ gcc -c main.c[root@localhost shellSort]$ gcc -o main main.o shellSort.o
执行可执行文件main如下:
[root@localhost shellSort]$ ./main Input array length:12Get random array :518 713 265 31 350 931 592 872 489 927 640 106 shell sort result:31 106 265 350 489 518 592 640 713 872 927 931
希尔排序是个不稳定的排序,性能优于直接插入排序
- 希尔排序Linux下c 实现
- 希尔排序Linux下C实现
- C语言实现希尔排序
- c语言实现希尔排序
- C语言实现希尔排序
- 希尔排序C语言实现
- 希尔排序-C语言实现
- 希尔排序c语言实现
- 希尔排序-c语言实现
- 排序算法(C实现)------- 希尔排序
- C语言实现排序算法---希尔排序
- 希尔排序及C语言实现
- 希尔排序 shellinsert c语言实现
- 希尔排序算法实现(C++)
- 希尔排序 以及c的实现函数
- Xcode gcc C++(希尔排序实现)
- 希尔排序(C语言实现)
- 希尔排序及C语言实现
- 01参数搜索+二分+spfa判负环
- VS中组件
- 编译静态库
- Hbase安装小记
- itoa 原函数
- 希尔排序Linux下c 实现
- CRC32算法
- __bridge,__bridge_transfer和__bridge_retained
- 如何才能做到网站高并发访问? .
- 查看RAC CLUSTER NAME方法
- Install Vmware Tools 安装失败
- DirectX 9.0 C++ 教程 绘制三角形
- Writing a Simple Publisher and Subscriber (C++)
- TDD-J2EE Example