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++ ,