第十章(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 ; }
这一章的内部排序和下一章的外部排序吧,主要学思想!思想最重要!我这儿的代码都是浮云,浮云!
相关文章推荐
- Java排序算法(六):直接插入排序
- 常见排序算法的Java实现(3)——直接插入排序
- 简单选择排序、直接插入排序、归并排序
- 排序算法之直接插入排序(JAVA)
- 排序之直接插入排序
- 直接插入排序
- 直接插入排序
- 直接插入排序(java与js版)
- 排序算法(一)直接插入排序
- C++实现直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序,快速排序,堆排序
- 直接插入排序(Straight Insertion Sort)
- 直接插入排序
- 直接插入排序 C语言版
- C++模板实现直接插入排序
- 数据结构_静态链表直接插入排序
- 直接插入排序
- 排序(2):直接插入排序
- 排序算法--直接插入排序
- 《大话数据结构》读书笔记——9.5直接插入排序
- 直接插入排序