当前位置:编程学习 > C/C++ >>

C++ 直接排序实例代码详解

for (j=i;j>-1;j--)
{
    if (map[j]<temp)//第一个数大于第二个数,前面大于后面就进行交换 4.         {
    // map[j]=map[j]; 6.            map[j 1]=map[j];
    map[j]=temp;
}
基本思想:
把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

实现过程:
第一步求升序排序
#include <iostream> 3.using namespace std;
int map[10]={3,1,2,10,8,4,5,6,7,9};
void main()
{
    int i,j;
    int temp;
    for (i=0;i<10-1;i )
    {
        temp=map[i 1];//无序表的临时变量元素 16.17.//第一种条件写法 18.         j=i;//从i=0 开始到i=9结束循环 19.         while(j>-1&&temp<map[j])
    {
        map[j 1]=map[j];
        j--;//退出循环的标记 23.         }
        map[j 1]=temp;
    }
    for (int k=0;k<10;k )
    {
        cout<<map[k]<<endl;
    }
}

 第二种写法:
#include <iostream> 2.using namespace std;
int map[10]={3,1,2,10,8,4,5,6,7,9};
void main()
{
    int i,j;
    int temp;
    for (i=0;i<10-1;i )
    {
        temp=map[i 1];//无序表的临时变量元素 15.16.//两种写法 17.//       j=i;//从i=0 开始到i=9结束循环 18.//       while(j>-1&&temp<map[j]) 19.//       {   20.//           map[j 1]=map[j]; 21.//           j--;//退出循环的标记 22.//       } 23.//       map[j 1]=temp;  24.25.   for (j=i;j>-1;j--)
    {
    if (map[j]<temp)//第一个数大于第二个数,前面大于后面就进行交换 28.         {
    // map[j]=map[j]; 30.            map[j 1]=map[j];
        map[j]=temp;
    }
    }
    //map[j 1]=temp; 39.   
 }
    for (int k=0;k<10;k )
    {
        cout<<map[k]<<endl;
}

比较上下两种写法,其实实现的结果是一样的,目的是排序1-10顺利列表。
第一步:我们将第一个元素列为有序表,那么剩下的9个元素就是我们通过比较大小插入到有序表当中;

第二步:使用的循环,一个外循环,一个内循环,外循环目的在于遍历剩下的9个数,而内循环比较数的大小,而后插入有序表的后面
for (j=i;j>-1;j--)
{
    if (map[j]<temp)//第一个数大于第二个数,前面大于后面就进行交换 4.         {
    // map[j]=map[j]; 6.            map[j 1]=map[j];//将前面的数赋予后面的数
    map[j]=temp;//将后面的数赋予前面的数
}
如果后面的数大于前面的数,那么两个数就需要进行交互了,说白了,大的在后,前的在小
结果:1,2,3,4,5,6,7,8,9,10

完成直接排序
说到这里,我们联系到我们的As3.0代码中同样类似的功能,可以发挥一下想像用flash 模拟这种数据结构

基本过程:
一、定义一个数组,一个没有排序好的数组
map[10],这样做法尽量简单,明白,省去麻烦的代码。

二、我们把第一个数定义为有序表,剩下的10-1=9的个数属于无序表
(有序表 无序表)=》排序成有序表

三、利用两个循环,一个外循环,一个内循环,对剩下的9个数进行比较,大的数放在后面,小的数放在前面,进行位置交互,

四、输出结果,输出我们的结果,希望这篇文章能对你有所收获。
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,