选择排序
/*运用递归的思想来进行排序。
假设有n个数,用数组来存。
one:找出1..n(位置)的最小数,然后将其放到最前端,
1号位固定。
two:找出2..n(位置)的最小数,然后将其放到2..n的前端,
2号位固定。
………………………………………………………………….
一些运行下去,直到剩一个数字,结束。
*/
#include<stdio.h>voidselectsort(int a[],int n,int m);intgetmin(int a[],int n,int m);intmain(){ int a[6]={4,-1,6,1,1234,3}; selectsort(a,0,5); int i; for(i=0;i<6;i++) { PRintf("%d ",a[i]); } return 0;}voidselectsort(int a[],int n,int m){ int i; if(n==m) return; i=getmin(a,n,m); int temp=a[n]; a[n]=a[i]; a[i]=temp; selectsort(a,n+1,m);}intgetmin(int a[],int n,int m){ int i; int index=n; for(i=n;i<=m;i++) { if(a[index]>a[i]) { index=i; } } return index;}
插入排序
#include<stdio.h>voidsort(int a[],int n);voidinsert(int a[],int n,int x);intmain(){ int a[4]={2,3,1,4}; sort(a,4); int i; for(i=0;i<4;i++) { printf("%d ",a[i]); } return 0;}voidsort(int a[],int n1){ if(n1==1) return ; sort(a,n1-1); insert(a,n1-1,a[n1-1]); }voidinsert(int a[],int n2,int x){ int i; for(i=n2-1;i>=0;i--) { if(a[i]>x) { a[i+1]=a[i]; } else break; } a[i+1]=x;}
新闻热点
疑难解答