您的位置:首页 > 其它

第十章(1).直接插入排序

2015-04-26 17:24 211 查看
#include <iostream>
using namespace std ;
#define  MAXSIZE  20     //存储元素的顺序表的最大长度
typedef  int   KeyType ;   //关键字类型
typedef  int   InfoType ;   //其他数据项类型
typedef  struct {
KeyType key ;
InfoType otherinfor ;     //其他数据项
} RedType ;
typedef  struct {
RedType r[ MAXSIZE + 1 ] ;    //r[0]闲置或用作哨兵单元
int  length ;      //顺序表长度
} SqList ;         //顺序表类型
void InPut( SqList &L )
{
int value = 0 ;
int i = 1 ;
while( i < ( MAXSIZE + 1 ) )
{
cin >> value ;
if( value == -1 )     //以-1为结束符
break ;
L.r[ i ++ ].key = value ;
}
L.length = i - 1 ;
}
void InsertSort( SqList &L )    //引用  排序顺序为从小到大
{
int j = 0 ;
for( int i = 2 ; i < L.length + 1 ; ++ i )
{
if( L.r[ i ].key < L.r[ i - 1 ].key )
{
L.r[ 0 ] = L.r[ i ] ;
L.r[ i ] = L.r[ i - 1 ] ;
for( j = i - 2 ; L.r[ 0 ].key < L.r[ j ].key ; -- j ) //画图推理
L.r[ j + 1 ] = L.r[ j ] ; //记录后移
L.r[ j + 1 ] = L.r[ 0 ] ;  //插入到正确的位置
}
}
}
void OutPut( SqList L )
{
for( int i = 1 ; i < L.length + 1 ; ++ i )
{
cout << L.r[ i ].key << ' ' ;
}
cout << endl ;
}
int main( )
{
SqList L ;
InPut( L ) ;
InsertSort( L ) ;
OutPut( L ) ;
return 0 ;
}
这一章的内部排序和下一章的外部排序吧,主要学思想!思想最重要!我这儿的代码都是浮云,浮云!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: