首页 > 代码库 > 各种排序的递归实现(冒泡、插入)

各种排序的递归实现(冒泡、插入)

冒泡排序--递归实现

 1 void SortByRecursion( int *array, int n ) 2 { 3     int i; 4     if(1 == n) 5     { 6         return; 7     } 8     for(i = 0; i < n - 1; i++) 9     {10         if(array[i] > array[i + 1])11              swap( &array[i], &array[i + 1]);12     }13     SortByRecursion( array, n - 1 );14 }

插入排序---递归实现

 1 void Insert(int *a,int n)//把数组a的第n个数插入前n-1个数中,注意前n-1个数已经是排好序的了 2 { 3     int i=n-1; 4     int key=a[n]; 5     while((i>=0)&&(key<a[i])) 6     { 7         a[i+1]=a[i]; 8         i--; 9     }10     a[i+1]=key;11     return;12 }13 14 void InsertionSort(int *a,int n)//递归插入,跟求阶乘的思想一样,前n-1个排好序的数组,是建立在前n-2个排好序的数组的基础上插出来的15 {16     if(n>0)17     { 18         Insert(a,n);19         InsertionSort(a,n-1);20     }21     else 22         return;23 }

待续……