主要排序算法:冒泡排序、快速排序
一、
冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最后面,然后再对剩下的序列重复前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.
算法时间复杂度,O(n2)
#include
int Data[10]={12,3,27,9,19,1,7,21,24,17};
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void Bubble_Sort(int array[],int length)
{
int i,j;
for(i=0;i {
for(j=i+1;j {
if(array[i]>array[j])
{
swap(&array[i],&array[j]);
}
}
}
}
int main()
{
int k;
Bubble_Sort(Data,10);
for(k=0;k<10;k++)
{
printf("Data[%d]=%d ",k,Data[k]);
if((k+1)%5==0)
printf("\n");
}
return 1;
}
二、
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
#include
int data[10]={17,47,28,63,13,15,32,53,48,99};
void quick_sort(int array[],int low,int high)
{
int i,j,pivot;
if(low {
pivot=array[low];
i=low;
j=high;
while(i {
while (i=pivot)
j--;
if(i array[i++]=array[j];//将比枢轴记录小的记录移到低端
while (i i++;
if(i array[j--]=array[i];//将比枢轴记录大的记录移到高端
}
array[i]=pivot;//枢轴记录移到最终位置
quick_sort(array,low,i-1);
quick_sort(array,i+1,high);
}
}
int main()
{
quick_sort(data,0,9);
int i;
for(i=0;i<10;i++)
printf("data[%d]=%d\n",i,data[i]);
return 1;
}
阅读(479) | 评论(0) | 转发(0) |