快排源代码
来源:互联网 发布:淘宝关键字搜索量 编辑:程序博客网 时间:2024/06/06 03:40
昨天看了一下午的快排,终于写出了快排,并且测试通过,现贴出与大家共享。
/**作者:xautjzd*时间:2013-3-5*功能:快速排序**/#include <stdio.h>void quickSort(int a[],int left,int right);void swap(int *x,int *y);int main(){ int array[]={10,9,8,7,6,5,4,3,2,1}; quickSort(array,0,9); int i=0; for(i=0;i<10;i++) printf("%d ",array[i]); printf("\n"); return 0;}void quickSort(int a[],int left,int right){ int i=left,j=right; int pivot=a[left]; //设最左的待排数组为基数 for(;;){ while(i<j&&a[j]>=pivot) //j从右到左找比基数小的数 j--; while(i<j&&a[i]<=pivot) //i从左到右找比基数大的数 i++; if(i<j) //i<j,交换找出符合条件的两数 swap(&a[i],&a[j]); else //否则第一次循环结束,i左侧的数比基数都小,i右侧的数比基数都大 break; } swap(&a[i],&a[left]); if(left<right) //判断数组长度是否大于1,至少有两数才需继续递归 quickSort(a,left,i-1); if(left<right) quickSort(a,i+1,right);}void swap(int *x,int *y){ int temp=*x; *x=*y; *y=temp;}
下列代码是参考网上的代码,也一并贴出
#include <stdio.h>void quickSort(int numbers[], int array_size);void q_sort(int numbers[], int left, int right);int main(){ int array[]={7,4,6,9,1,3,8,2,10,5}; quickSort(array,10); int i=0; for(i=0;i<10;i++) printf("%d ",array[i]); printf("\n"); return 0;}void quickSort(int numbers[], int array_size){ q_sort(numbers, 0, array_size - 1);}void q_sort(int numbers[], int left, int right){ int pivot, l_hold, r_hold; l_hold = left; r_hold = right; pivot = numbers[left]; while (left < right) { while ((numbers[right] >= pivot) && (left < right)) right--; if (left != right) { numbers[left] = numbers[right]; left++; } while ((numbers[left] <= pivot) && (left < right)) left++; if (left != right) { numbers[right] = numbers[left]; right--; } } numbers[left] = pivot; pivot = left; left = l_hold; right = r_hold; if (left < pivot) q_sort(numbers, left, pivot-1); if (right > pivot) q_sort(numbers, pivot+1, right);}
或者
#include<stdio.h>void quicksort(int x[],int,int);int main(){ int x[100],size,i; printf("Enter size of the array: "); scanf("%d",&size); printf("Enter %d elements: ",size); for(i=0;i<size;i++) scanf("%d",&x[i]); quicksort(x,0,size-1); printf("Sorted elements: "); for(i=0;i<size;i++) printf(" %d",x[i]); return 0;}void quicksort(int x[],int first,int last){ int pivot,j,temp,i; if(first<last){ pivot=first; i=first; j=last; while(i<j){ while(x[i]<=x[pivot]&&i<last) i++; while(x[j]>x[pivot]) j--; if(i<j){ temp=x[i]; x[i]=x[j]; x[j]=temp; } } temp=x[pivot]; x[pivot]=x[j]; x[j]=temp; quicksort(x,first,j-1); quicksort(x,j+1,last); }}
- 快排源代码
- 快排源代码
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 关于Python时间的那些事儿
- java 内部类详解(转)
- Java反射机制剖析(三)-简单谈谈动态代理
- 关于响应式页面
- 详细介绍JavaScript中的cookie
- 快排源代码
- Oracle-TIMESTAMP&DATE互转
- JavaScript Cookies
- C#.net中的const
- There is no Action mapped for action name main
- linux-socket-select-异步聊天
- Expert C Programing——阅读笔记六
- 自己以前写的QTP的脚本(autoitx技术-third party)
- Javascript设置和读取cookie中的值