linux中使用dd命令进行硬盘对刻
2011-09-05 10:41
155 查看
昨晚看了一下数据结构发现都忘了!嘿嘿!(本来学的就不好!呵呵!)
简单的插入排序算法!
1.基本思想
插入排序的基本思想就是:每次将一个待排序的记录,按照其关键字大小插入到已经排好序的子序列的适当位子,知道全部记录插入完成为止;
假设待排序的记录都存储在R
中,首先把R[1]自成一个有序区,R[2..n]为无序区,然后将R[2..n]中的记录依次插入到R[1..i]中,直到生成含有n个记录的有序区;
在插入的某一中间时刻,存在两个区,一个是R[1..i-1]有序区,一个R[i..n]无序待排序的区;
2.算法分析
void lnsertSort(SeqList R)
{ //对顺序表R中的记录R[1..n]按递增序进行插入排序
int i,j;
for(i=2;i<=n;i++) //依次插入R[2],…,R
if(R[i].key<R[i-1].key){//若R[i].key大于等于有序区中所有的
//keys,则R[i] 应在原有位置上
R[0]=R[i];j=i-1; //R[0]是哨兵,且是R[i]的副本
do{ //从右向左在有序区R[1..i-1]中查找R[i]的插入位置
R[j+1]=R[j]; //将关键字大于R[i].key的记录后移
j-- ;
}while(R[0].key<R[j].key); //当R[i].key≥R[j].key时终止
R[j+1]=R[0]; //R[i]插入到正确的位置上
}//endif
}//InsertSort
哨兵的作用
算法中引进的附加记录R[0]称监视哨或哨兵(Sentinel)。
哨兵有两个作用:
① 进人查找(插入位置)循环之前,它保存了R[i]的副本,使不致于因记录后移而丢失R[i]的内容;
② 它的主要作用是:在查找循环中"监视"下标变量j是否越界。一旦越界(即j=0),因为R[0].key和自己比较,循环判定条件不成立使得查找循环结 束,从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件"j>=1")。
实现:
#include <iostream.h>
void IntSort(int A[],int n)
{
int x,i,j;
for(i=1;i<n;i++)
{
x = A[i];
for(j= i-1;j>=0;j--)
{
if(x<A[j])
A[j+1] = A[j];
else
break;
}
A[j+1] = x;
}
}
int main()
{
int a[] = {12,34,13,456,1,95,5};
IntSort(a,7);
for(int i= 0; i<7;i++)
{
cout<<a[i]<<" "<<endl;
}
}
一个简单的例子:
a[]={5,8,7}
当i=2时要插入的是7,外层for循环将7 赋给x,而内层循环a[2]<a[1]所以把a[1]赋给a[2] 然后在内层的第二次循环结束时把a[2]的值赋给a[1],排序完毕!!!
简单的插入排序算法!
1.基本思想
插入排序的基本思想就是:每次将一个待排序的记录,按照其关键字大小插入到已经排好序的子序列的适当位子,知道全部记录插入完成为止;
假设待排序的记录都存储在R
中,首先把R[1]自成一个有序区,R[2..n]为无序区,然后将R[2..n]中的记录依次插入到R[1..i]中,直到生成含有n个记录的有序区;
在插入的某一中间时刻,存在两个区,一个是R[1..i-1]有序区,一个R[i..n]无序待排序的区;
2.算法分析
void lnsertSort(SeqList R)
{ //对顺序表R中的记录R[1..n]按递增序进行插入排序
int i,j;
for(i=2;i<=n;i++) //依次插入R[2],…,R
if(R[i].key<R[i-1].key){//若R[i].key大于等于有序区中所有的
//keys,则R[i] 应在原有位置上
R[0]=R[i];j=i-1; //R[0]是哨兵,且是R[i]的副本
do{ //从右向左在有序区R[1..i-1]中查找R[i]的插入位置
R[j+1]=R[j]; //将关键字大于R[i].key的记录后移
j-- ;
}while(R[0].key<R[j].key); //当R[i].key≥R[j].key时终止
R[j+1]=R[0]; //R[i]插入到正确的位置上
}//endif
}//InsertSort
哨兵的作用
算法中引进的附加记录R[0]称监视哨或哨兵(Sentinel)。
哨兵有两个作用:
① 进人查找(插入位置)循环之前,它保存了R[i]的副本,使不致于因记录后移而丢失R[i]的内容;
② 它的主要作用是:在查找循环中"监视"下标变量j是否越界。一旦越界(即j=0),因为R[0].key和自己比较,循环判定条件不成立使得查找循环结 束,从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件"j>=1")。
实现:
#include <iostream.h>
void IntSort(int A[],int n)
{
int x,i,j;
for(i=1;i<n;i++)
{
x = A[i];
for(j= i-1;j>=0;j--)
{
if(x<A[j])
A[j+1] = A[j];
else
break;
}
A[j+1] = x;
}
}
int main()
{
int a[] = {12,34,13,456,1,95,5};
IntSort(a,7);
for(int i= 0; i<7;i++)
{
cout<<a[i]<<" "<<endl;
}
}
一个简单的例子:
a[]={5,8,7}
当i=2时要插入的是7,外层for循环将7 赋给x,而内层循环a[2]<a[1]所以把a[1]赋给a[2] 然后在内层的第二次循环结束时把a[2]的值赋给a[1],排序完毕!!!
相关文章推荐
- 使用Grub进行Linux的硬盘安装与修复
- linux——使用fidsk对linux硬盘进行操作【转】
- 使用fdisk命令对linux硬盘进行操作
- 使用parted命令对linux硬盘进行操作
- 使用iostat来对linux硬盘IO性能进行检测
- 使用fdisk命令对linux硬盘进行操作
- 使用fdisk命令对linux硬盘进行操作
- Linux使用dd命令测试硬盘读写速度
- Linux使用dd命令测试硬盘读写速度
- Linux使用dd命令测试硬盘读写速度
- 使用iostat来对linux硬盘IO性能进行检测
- 使用parted命令对linux硬盘进行操作
- 使用Clonezilla("再生龙")对Linux系统硬盘进行镜像和克隆
- Linux使用dd命令测试硬盘读写速度
- Linux使用dd命令测试硬盘读写速度
- linux下创建可引导的U盘系统,使用dd命令进行Linux的ghost
- 使用fdisk命令对linux硬盘进行操作
- linux下使用文件来模拟硬盘进行ASM测试-开发技术
- linux下创建可引导的U盘系统,使用dd命令进行Linux的ghost
- Linux系统添加硬盘设备(磁盘分区-格式化-挂载-使用)