几种排序算法实现

来源:互联网 发布:linux svn 版本号 编辑:程序博客网 时间:2024/05/20 21:33
//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;}

原创粉丝点击