摘要:1 void qs(int s,int e) 2 { 3 int x=a[s],l=s,r=e;//以第一个数为参照做比较 4 if(l>=r)return; 5 while(l<r) 6 { 7 while(l<r&&a[r]>=x) 8 r--; //不小于分界值的留在右边,遇到小于的停止 9 a[l]=a[r]; 10 while(l<r&&a[l]<=x) 11 l++; //小于分界值的留在左边,遇到...
阅读全文
摘要:1 #include<stdio.h> 2 3 void BubbleSort(int *a,int n) 4 { 5 int temp,i,j; 6 for(i=1;i<n-1;i++)//从1开始,每次j都从最后一个数开始往前比较,直到j遇到i。因为i前面的比较完成的了。 7 for(j=n-1;j>=i;j--) 8 { 9 if(a[j-1]>a[j])10 {11 temp = a[j];12 a[j] = a[j-1];...
阅读全文
摘要:1 #include<stdio.h> 2 3 void MaxHeapify(int *a,int i,int len) 4 {//a为数组,i为需要保证最大堆性质的位置,len为数组中要排序的个数 5 int l=2*i;//i的左子女,数组是从1开始的 6 int r=2*i+1; 7 int largest,temp; 8 if((l<=len)&&(a[l]>a[i])) 9 largest = l;10 else largest = i;11 12 if((r<=len)&&(a[r]>a[largest]))13
阅读全文
摘要:1 #include<stdio.h> 2 3 4 void Insert(int *a,int n)//把数组a的第n个数插入前n-1个数中,注意前n-1个数已经是排好序的了 5 { 6 int i=n-1; 7 int key=a[n]; 8 while((i>=0)&&(key<a[i])) 9 {10 a[i+1]=a[i];11 i--;12 }13 a[i+1]=key;14 return;15 }16 17 void InsertionSort(int *a,int n)//递归插入,跟...
阅读全文
摘要:1 #include<stdio.h> 2 3 int a[10],i,j,n,key; 4 void InsertionSort(int *a,int n)//*a才对 5 { 6 for(j=1;j<n;j++) 7 { 8 key=a[j]; 9 i=j-1;10 while((i>=0)&&(key<a[i]))11 {12 a[i+1]=a[i];13 i--;14 }15 a[i+1]=key;16 }17 }1...
阅读全文
摘要:#include<stdio.h>#define MAX_INT 65535//哨兵void Merge(int *a,int p,int q,int r)//关键函数~ 合并{ int L[50],R[50],b[100],i,j,k; int len1=q-p+1; int len2=r-q; for(i=0;i<len1;i++) { L[i] = a[p+i]; } L[len1]=MAX_INT; //L[len1]=600; for(i=0;i<len2;i++) { R[i] = a[q+1+i]; } R[len2] = MAX_INT; //R[len
阅读全文