1 / 8
文档名称:

五大基本排序算法.doc

格式:doc   大小:91KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

五大基本排序算法.doc

上传人:小sjj 2021/12/10 文件大小:91 KB

下载得到文件列表

五大基本排序算法.doc

文档介绍

文档介绍:选择排序算法:
算法基本原理:一次选定数组中的每一个数,记下当前位置并假设它 是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始 扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果 算法实现:
min不等于i,说明假设错误,
否则交换min与i位置上数。
#inelude <>
〃选择排序,如果第一个数字小于后面的则向后移动,依次类推 该排序时不稳定的,时间复杂度是N平方
void main()
{
int array[ 10] = {112,4,2,3,5,33,6,7,8,9};//定义一个数组
int length = sizeof(array)/sizeof(array[0]);//得到数组的长度
int k=0, s=0, i=0, j=O;//k保存临时结果,s, i, j为循环变量 〃选择排序开始
for(i=0;i<le ngth;i++)
{
for(j=i+1;j<length;j++)
{
if(array[i]> array [j])
{
k=array [i];
array [i]=array [j];
array [j]=k;
}
}
}
〃选择排序结束,输出显示排序的结果
for(s=0; s<length; s++)
{
printf(”%d \nH,array[s]);
}
}
二•冒泡排序
算法基本原理:
对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与 欲排顺序相反
),若逆序就交换这两元素,经过第一轮比较排序后便可 把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个 进行比较,就得到了你所要的顺序。
算法实现:
#inelude <>
〃冒泡排序,开始的时候两个数进行比较,大的向后小的向前,第一次比 较很容易的就把最大的一个数字放到了最后小的呢,继续向前,第二次 当然也找到了第二个大的,放到倒数第二的位置,如此下去便可。这个 是优化的冒泡排序方法,让k二j保存最后的那个数的下标,这样k后面的 数都是排序好的了,这个排序是稳定的,时间复杂度是N平方
void main()
{
int array[1O] = {1,2,11,22,33,4,23,234,4,6};
int length = sizeof(array)/sizeof(array[OJ);
int k=0, s=0, i=0, j=0, m=0;
//冒泡排序开始
for(i = len gth-1;i>O;i=k)
{
for(j=0, k=O;j<i;j++)
{
if(array[j]>array[j+1])//把比较出来大的数据向后移动
{
m=array [j];
array[j]=array[j+1];
array[j+1]=m;
k二 j;
}
}
}
〃冒泡排序结束,输出显示排序的结果
for(s=0; s<length; s++)
printfC*%d \nH,array[s]);
}
}
三•快速排序
算法基本原理:
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare 在1962年提岀