//2013年6月3日13:13:49
#include "stdio.h"
#define MAX 100
/************************************************************************/
/* 插入排序算法
参数:数组 */
/************************************************************************/
void insertSort(int array[],int n)
{
int i,j;
for (i=1;i<n;i++)
{
//array[0]=array[i];
int temp = array[i];//从第二个元素开始判断,假设第一个元素已经是有序的
j=i-1;
while (temp<array[j])/*将temp与已排序元素从小到大比较,寻找temp应插入的位置*/
array[j+1]=array[j--];
array[j+1]=temp;
}
}
/************************************************************************/
/* 冒泡排序算法:将第n个关键字和第n-1个关键字进行比较,如果第n个关键字小于
第n-1个关键字,则进行交换;然后比较n-1和n-2个关键字,直到第1个关键字,这样
完成一次排序过程 */
/************************************************************************/
void bubble_Sort(int array[],int n)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=n;j>i;j--)
{
int temp;
if (array[j]<array[j-1])
{
temp = array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
}
/************************************************************************/
/* 快速排序: */
/************************************************************************/
void quickSort(int array[],int low,int high)
{
if(low<high)
{
int i=low,j=high,x=array[low];
while (i<j)
{
while (i<j && array[j]>x)//从右边的开始
j--;
if(i<j)
array[i++]=array[j];
while (i<j && array[i]<x)
i++;
if (i<j)
{
array[j--]=array[i];
}
}
array[i]=x;
quickSort(array,low,i-1);
quickSort(array,i+1,high);
}
}
/************************************************************************/
/* 输出数组 */
/************************************************************************/
void printfArray(int array[],int n)
{
int i;
for (i=0;i<n;i++)//注意:获取数组的长度的方法
{
printf("%d ",array[i]);
}
}
/************************************************************************/
/* 直接选择排序:第一次选择所有中最小的一个与第一个数交换,然后在剩下的n-1个
数中选择最小的都第二个交换,直到最后 */
/************************************************************************/
void selectSort(int array[],int n)
{
int i,j,k;
for (i=0;i<n;i++)
{
k=i;
for (j=i+1;j<n;j++)
{
if (array[k]>array[j])
k=j;
}
if(k!=i)
{
int temp = array[i];
array[i]=array[k];
array[k]=temp;
}
}
}
//主函数
int main(void)
{
int array[]={36,25,48,12,65,43,20,36};//待排序数组
printf("待排序的数组为:\n");
printfArray(array,8);
printf("经过插入排序之后的数组为:\n");
insertSort(array,8);
printfArray(array,8);
printf("\n");
printf("冒泡排序后的结果:\n");
bubble_Sort(array,8);
printfArray(array,8);
printf("\n");
printf("选择排序后的结果:\n");
selectSort(array,8);
printfArray(array,8);
printf("\n");
printf("快速排序后的结果:\n");
quickSort(array,0,8);
printfArray(array,8);
printf("\n");
return 0;
}
几种排序算法实现
最新推荐文章于 2024-08-23 23:00:00 发布