鸡尾酒排序Linux下C 达成
发布时间:2021-11-22 13:38:19 所属栏目:教程 来源:互联网
导读:很久很久以前,曾经写了篇文章:冒泡排序 Linux下C 实现 ,这次再show个冒泡排序的变种:鸡尾酒排序。 鸡尾酒排序在排序时,从两个方向在序列中排序。先找到最大的数字放到最后一位,然后找到最小的数字,放到第一位;然后再找到第二大的数字放到倒数第二位
很久很久以前,曾经写了篇文章:冒泡排序 Linux下C 实现 ,这次再show个冒泡排序的变种:鸡尾酒排序。 鸡尾酒排序在排序时,从两个方向在序列中排序。先找到最大的数字放到最后一位,然后找到最小的数字,放到第一位;然后再找到第二大的数字放到倒数第二位,再找到第二小的数字放到第二位。以此类推,直到完成排序。详细实现,请参阅下面的关键代码: 1、排序头文件:cocktailSort.h #ifndef COCKTAILSORT_H #define COCKTAILSORT_H #include<stdbool.h> extern void cocktailSort(int * pArr, int length); #endif 2、排序源文件:cocktailSort.c #include "cocktailSort.h" void cocktailSort(int * pArr, int length) { int bottom = 0; int top = length-1; bool swapped = true; int tmp,i; while(swapped) { swapped = false; for(i=bottom; i<top; i++) { if(*(pArr+i)>*(pArr+i+1)) { swapped =true; tmp = *(pArr+i); *(pArr+i)=*(pArr+i+1); *(pArr+i+1)=tmp; } } top--; for(i=top; i>bottom; i--) { if(*(pArr+i)<*(pArr+i-1)) { swapped = true; tmp = *(pArr+i); *(pArr+i)=*(pArr+i-1); *(pArr+i-1)=tmp; } } bottom++; } } 3、main函数头文件:main.h #ifndef MAIN_H #define MAIN_H #include<stdio.h> #include "cocktailSort.h" extern void outputArr(const int *pArr, int lenght); extern int main(void); #endif 3、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 0n"); return 1; } printf("array lenght is %d n", length); int arr[length];// ={1, 3, 6,5, 4}; int i=0; for(i=0;i<length;i++) { printf("input arr[%d] valuen",i); scanf("%d", &arr[i]); } printf("orig array:"); outputArr(arr, length); cocktailSort(arr,length); printf("cocktail sort array:"); outputArr(arr, length); return 0; } void outputArr(const int *pArr, int length) { int i; for(i=0;i<length;i++) { printf(" %d",*(pArr+i)); } printf("n"); } 4、Makefile文件:Makefile all: main main: main.o cocktailSort.o gcc -o main main.o cocktailSort.o main.o: main.c cocktailSort.c cocktailSort.h gcc -c main.c cocktailSort.o: cocktailSort.c cocktailSort.h gcc -c cocktailSort.c clean: @echo "start cleaning" -rm main *.o @echo "clean completed" .PHONY: clean 5、编译 make 如果不出意外,可以看到可执行文件main。然后执行可执行文件,如下所示: [root@localhost sort]$ ./main input array length: 5 array lenght is 5 input arr[0] value 34 input arr[1] value 67 input arr[2] value 89 input arr[3] value 4 input arr[4] value 3 orig array: 34 67 89 4 3 cocktail sort array: 3 4 34 67 89 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |