数据结构——复习九(排序)
排序 稳定排序和不稳定排序 假设Ri=Rj(0<=i,j<=n-1,i≠j),且在排序前的序列中Ri领先于Rj(即i<j),若在排序后的序列中Ri仍领先于Rj,则称所用的排序方法是稳定的,否则是不稳定的。 内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问的排序 插入排序:直接插入排序、折半插入排序、希尔排序、表插入排序 交换排序:起泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序:2-路归并排序 分配排序 插入排序 直接插入排序 上面的过程很直观,挺简单的,对我来说比较好理解 //我自己写了一种,还有一种都是一样的,后面那种对理解shell排序比较有帮助 void straisort ( int r [ ] , int n ) { int i , j , k ; for ( i = 2 ; i <= n ; i ++ ) { r [ 0 ] = r [ i ] ; j = i - 1 ; for ( k = 1 ; k <= j ; k ++ ) { if ( r [ 0 ] < r [ k ] ) r [ k + 1 ] = r [ k ] ; else { r [ k + 1 ] = r [ 0 ] ; break ; } } } } void straisort ( int r [ ] , int n ) { int i , j ; for (