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個數進行比較,大的數放在後面,小的數放在前面,進行位置交互,
四、輸出結果,輸出我們的結果,希望這篇文章能對你有所收獲。