内排序(3)交换排序:改进的冒泡和快速排序
2013-03-21 09:37
267 查看
改进的冒泡,稳定排序
int a[]={16,7,3,20,17,8};
int size=6;
for(int i=0;i<size;i++)
{
int k=i;
for(int j=i;j<size;j++)
{
if(a[k]>a[j])
k=j;
}
if(k!=i)
swap(a[k],a[i]);
}
快速,不稳定排序
int Partition(int* a,int l,int h)
{
int temp=a[l];
while(l<h)
{
while(l<h&&a[h]>temp)
h--;
if(l<h)
a[l++]=a[h];
while(l<h&&a[l]<temp)
l++;
if(l<h)
a[h--]=a[l];
}
a[l]=temp;
return l;
}
void QuickSort(int* a,int l,int h)
{
if(l>=h) return;
int m=Partition(a,l,h);
QuickSort(a,l,m-1);
QuickSort(a,m+1,h);
}
int a[]={16,7,3,20,17,8};
int size=6;
QuickSort(a,0,size-1);
int a[]={16,7,3,20,17,8};
int size=6;
for(int i=0;i<size;i++)
{
int k=i;
for(int j=i;j<size;j++)
{
if(a[k]>a[j])
k=j;
}
if(k!=i)
swap(a[k],a[i]);
}
快速,不稳定排序
int Partition(int* a,int l,int h)
{
int temp=a[l];
while(l<h)
{
while(l<h&&a[h]>temp)
h--;
if(l<h)
a[l++]=a[h];
while(l<h&&a[l]<temp)
l++;
if(l<h)
a[h--]=a[l];
}
a[l]=temp;
return l;
}
void QuickSort(int* a,int l,int h)
{
if(l>=h) return;
int m=Partition(a,l,h);
QuickSort(a,l,m-1);
QuickSort(a,m+1,h);
}
int a[]={16,7,3,20,17,8};
int size=6;
QuickSort(a,0,size-1);
相关文章推荐
- 冒泡排序、交换排序、选择排序、插入排序、快速排序、SHELL排序
- 交换类排序--冒泡、快速
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序
- 浅谈数据结构-交换排序(冒泡、快速)
- [Java]交换排序法(冒泡、快速)的简单说明
- 交换类排序:冒泡,快速(递归与非递归)
- 排序总结:插入(简单和改进)、希尔、选择、冒泡、快速、堆排序、归并排序
- 20180313交换排序-冒泡
- 数据结构 27 排序 排序-选择 插入 冒泡 希尔 快速归并 6种排序
- Java实现交换排序之快速排序
- 冒泡、快速排序
- 交换排序:冒泡排序vs快速排序
- 冒泡、插入、选择排序及其改进
- Java_冒泡、插入、快速、选择排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- java简单实现冒泡 快速 选择排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- 排序算法-交换排序_快速排序
- 两种常用的交换排序算法--冒泡排序、快速排序