排序小(新)

来源:互联网 发布:淘宝网通勤是什么意思 编辑:程序博客网 时间:2024/04/30 14:18
#include<stdio.h>void swap(int *a ,int *b)//交换{if(*a != *b){*a ^= *b;//a b a*b ^= *a;*a ^= *b;}}void maopao_sort(int a[],int n)//冒泡排序{int i,j;for(i =0 ;i< n;i++){for(j= 1;j<n-i;j++)//j = 1,到n-1{if(a[j-1]>a[j])swap(&a[j-1],&a[j]);}}}void insert_sort(int a[],int n)//插入排序{int i,j;for(i=0 ;i<n;i++){for(j=i-1;j>=0&&a[j]>a[j+1];j--){swap(&a[j],&a[j+1]);}}}void choose_sort(int a[],int n)//选择排序{int i,j,Mid;for(i = 0;i<n;i++){Mid = i;for(j =i+1;j<n;j++){if(a[j]<a[Mid])Mid = j;}//确定好了mid再进行交换swap(&a[i],&a[Mid]);//把a[i]和最小的Mid交换}}/*void quick_sort(int a[],int l ,int r)//快速排序,{if(l<r){int i= l,j = r,x= a[i];while(i<j){while(i<j && a[j]>= x) j--;if(i<j) a[i++]=a[j];while(i<j && a[i]<x) i++;if(i<j) a[j--]=a[i];}a[i] = x;quick_sort(a,l,i-1);quick_sort(a,i+1,r);}}*///快速排序c语言版本void Quick_sort(int a[],int numsize)//a是整形数组,numsize是元素个数{int i= 0,j = numsize-1;int val = a[0];//指定参考值val大小if(numsize>1)//确定数组长度至少为2,否则无需排序{while(i<j)//循环结束条件{for(;j>i;j--)//从后向前搜索比val小的元素,找到后填到a[i]中并跳出循环if(a[j]<val){a[i] = a[j];break;}for(;j>i;i++)if(a[i]>val){a[j] = a[i];break;}}a[i] = val;//讲保存在val中的数组放到a[i]中Quick_sort(a,i);//递归,对前i个数排序Quick_sort(a+i+1,numsize-1-i);//对i+1到numsize-1-i个数排序}}void print(int a[]){int i;for(i = 0;i<10;i++){printf("%d   ",a[i]);}printf("排序结束\n");}void main(int argc, char **argv){int a1[10] ={9,7,8,6,4,5,3,2,1,11};int a2[10] ={9,7,8,6,4,5,3,2,1,11};int a3[10] ={9,7,8,6,4,5,3,2,1,11};int a4[10] ={9,7,8,6,4,5,3,2,1,11};//quick_sort2(a1,0,9);Quick_sort(a1,10);//quick_sort(a1,0,9);printf("快速排序:");print(a1);maopao_sort(a2,10);printf("冒泡排序:");print(a2);choose_sort(a3,10);printf("选择排序:");print(a3);insert_sort(a4,10);printf("插入排序:");print(a4);}

0 0
原创粉丝点击