#include<stdio.h> /* *交换类排序,每天一道算法题 *按照从小到大的顺序进行排序 * 毛施平 */ //冒泡排序 void traverseArray(int *p,int length) { int i=0; for(;i<length;i++) { printf("%d\n",p[i]); } } //这个是最简单的 void bubbleSortOne(int *p,int length) { int i=length; int j,temp; int lastChangeIndex; printf("简单一点:\n"); while(i>1) { lastChangeIndex=1; for(j=0;j<i-1;j++) { if(p[j]>p[j+1]) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; lastChangeIndex=j; } } traverseArray(p,9); printf("\n"); i=lastChangeIndex; } } //这个排序并不是最简单的 void bubbleSort(int *p,int length) { int i,j,temp; for(i=0;i<length;i++) { for(j=0;j<length-i-1;j++) { if(p[j]>p[j+1]) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } } } //快速排序 int Partition(int *p,int low,int high) { //int low=0,high=length-1; int temp=p[low]; while(low<high) { while(low<high&&p[high]>=temp) high--; p[low]=p[high]; while(low<high&&p[low]<=temp) low++; p[high]=p[low]; } p[low]=temp; return low; } void QSort(int *p,int low,int high) { if(low<high) { int pivotloc=Partition(p,low,high); traverseArray(p,9); printf("\n"); QSort(p,low,pivotloc-1); QSort(p,pivotloc+1,high); } } int main() { int a[]={9,2,1,4,5,7,3,8,6}; bubbleSortOne(a,sizeof(a)/sizeof(int)); int low=0; int high=sizeof(a)/sizeof(int)-1; // QSort(a,low,high); traverseArray(a,sizeof(a)/sizeof(int)); system("pause"); return 0; }
冒泡排序和快速排序都属于交换类排序,最简单的冒泡排序需要考虑不
时间: 2024-10-12 16:35:27