logo资料库

快速排序算法matlab.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
生物医学信号处理作业快速排序法: 齐毅松 U200912446 生医 0903 原数据: 英语 62 数学 99 排完后数据 英语 21 数学 77 91 37 58 43 68 65 48 37 74 58 84 62 91 37 74 58 84 21 77 62 42 37 58 62 91 43 68 62 99 62 42 65 42 77 56 77 56 代码:C++ #include #include #include //快速排序 void QuickSort(int *data,int *datax,int x,int y) { int p=x,q=y-1,temp;//p,q 分别指向数组首尾,以首位数据为基准划分 while(q>p)//表示至少 2 个元素 { while (q>p&&data[q]>=data[p]) q--;
if (q>p) { temp = data[p],data[p] = data[q],data[q] =temp; temp = datax[p],datax[p] = datax[q],datax[q] =temp; p++; } while(q>p&&data[p]<=data[q]) p++; if (q>p) { temp = data[p],data[p] = data[q],data[q] =temp; temp = datax[p],datax[p] = datax[q],datax[q] =temp; q--; } if (p==q)//基准点位置 { QuickSort(data,datax,x,p);//分别对基点前、后半部分进行快速排序 QuickSort(data,datax,p+1,y); } } } void sort(int *data,int *datax) { int i; int tem; for(i=0;i<10;i++) {if(data[i]==data[i+1]) {if(datax[i]>datax[i+1]) {tem = datax[i],datax[i] = datax[i+1],datax[i+1] =tem; sort(data,datax); } } } } void print(int *data,int *datax) { int i; printf("\n"); printf("英语"); printf("数学"); for (i=0;i<10;i++)//输出未排序数据 { printf("\n"); printf(" %d ",data[i]); printf(" %d ",datax[i]); }
printf("\n"); system("pause"); } int main() { int data[10] ={62,58,65,62,37,21,37,43,62,77}; int datax[10]={99,84,48,91,74,77,58,68,42,56}; int temp[10]; printf("未排序数据为 :"); print(data,datax); QuickSort(data,datax,0,10); printf("英语排完为:"); print(data,datax); sort(data,datax); printf("英语数学全排完为:"); print(data,datax); }
分享到:
收藏