数据结构学习--快速排序算法
来源:互联网 发布:杀毒软件哪个好 知乎 编辑:程序博客网 时间:2024/06/07 05:03
快速排序是一种采用分治思想的排序,其主要的思想是从待排序的数据中取出一个分割元素,然后将余下的数据与分割的元素进行比较,把大于分割元素的数据放到分割元素的右边,把小于分割元素的数据放到左边,经过第一次排序之后,数据被分成了两部分,分割元素右边都是比它大的,左边都是比它小的。运用递归重复以上的操作,直到数据有序为止。
下面是具体的算法实现:
#include<stdio.h>
#define N 10
int part_ele(int a[],int ,int );
void sort(int a[],int ,int );
main()
{
int a[N],i;
printf("请输入10个排序数字:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,0,N-1);
printf("排序后:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}
void sort(int a[],int low,int high)
{
int middle;
middle=part_ele(a,low,high);
if(low>=high) return ;
sort(a,low,middle-1);//将分割元素左边数据进行排序
sort(a,middle+1,high);
}
int part_ele(int a[],int low,int high)
{
int part_element=a[low];
for(;;){
while(low<high&&a[high]>=part_element)
high--;
if(low>=high) break;//low和high指针“汇合”跳出循环
a[low++]=a[high];
while(low<high&&a[low]<=part_element)
low++;
if(low>=high) break;
a[high--]=a[low];
}
a[high]=part_element;//将分割元素放到数组
return high;//返回分割元素的下标
}
下面是具体的算法实现:
#include<stdio.h>
#define N 10
int part_ele(int a[],int ,int );
void sort(int a[],int ,int );
main()
{
int a[N],i;
printf("请输入10个排序数字:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,0,N-1);
printf("排序后:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}
void sort(int a[],int low,int high)
{
int middle;
middle=part_ele(a,low,high);
if(low>=high) return ;
sort(a,low,middle-1);//将分割元素左边数据进行排序
sort(a,middle+1,high);
}
int part_ele(int a[],int low,int high)
{
int part_element=a[low];
for(;;){
while(low<high&&a[high]>=part_element)
high--;
if(low>=high) break;//low和high指针“汇合”跳出循环
a[low++]=a[high];
while(low<high&&a[low]<=part_element)
low++;
if(low>=high) break;
a[high--]=a[low];
}
a[high]=part_element;//将分割元素放到数组
return high;//返回分割元素的下标
}
0 1
- 数据结构学习--快速排序算法
- 算法与数据结构学习 07 快速排序
- [数据结构] 快速排序算法
- 数据结构-快速排序算法
- 数据结构--排序算法--快速排序
- 新手学习数据结构与算法---快速排序算法
- 数据结构学习--快速排序
- 《数据结构与算法》学习笔记8 快速排序
- 菜鸟学习数据结构算法之路之快速排序
- 数据结构与算法-快速排序
- 【数据结构与算法】快速排序
- [数据结构与算法]快速排序
- 数据结构与算法:快速排序
- 数据结构-快速排序-划分算法
- 数据结构_快速排序算法
- 数据结构与算法-快速排序
- 数据结构与算法-----快速排序
- 数据结构算法之快速排序
- MySQL数据库创建一个用户跟权限的应用
- Lock与synchronized 的区别
- 优雅的控制ViewPager是否可以滑动
- Qt事件系统
- 设计模式之七大原则之 依赖倒置原则
- 数据结构学习--快速排序算法
- R.java was modified manually! Reverting to generated version!(R文件丢失异常原因汇总)
- 向上转型与向下转型
- 8086段偏移的计算
- Volley框架
- pushd popd dirs
- 使用JDK开发WebService
- win7与virtualbox安装的ubuntu系统资源相互访问
- ADB not responding. If you'd like to retry, then please manually kill "adb.e处理 Android studio2.1