久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2528|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

數(shù)據(jù)結(jié)構(gòu)-排序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:108531 發(fā)表于 2016-3-12 16:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  沒學(xué)數(shù)據(jù)結(jié)構(gòu)之前,就知道冒泡排序呵呵!學(xué)了之后才知道排序有這么多種方法,真是不學(xué)不知道,一學(xué)嚇一跳!那我們看看都有哪些排序方法吧!
一.插入排序
1.直接插入排序
2.折半插入排序
二.交換排序
1.冒泡排序
2.快速排序
三.選擇排序
1.直接選擇排序
2.堆排序
四.歸并排序
1.歸并2個有序序列
2.歸并排序
呵呵一共四大類:7種排序方法.
可能還有其他更多的排序方法,只是還不為所知吧。先來看看第一類插入排序!
插入排序:故名思意就是把待元素一個一個插入到數(shù)組中,插入之前于前面的元素進行比較,然后決定插入的位置。
1.直接插入排序:
C語言:
typedef strcut
{    int key;
}NODE;
NODE a[Max];
#define Max 100
void disort(NODE a[],int n)
/*對存放在a[]中,長度為n的序列進行排序*/
{int i,j;
NODE temp;
for(i=1;i<n;i++)
{    temp=a;
     j=i-1;
     while(j>=0&&temp.key<a[j].key)
    {    a[j+1]=a;
         j--;
     }
     a[j+1]=temp;
}
}
VB:
Private Type NODE
    key as long
End Type
Private Sub disort(a() as NODE,ByVal n as long)
    Dim i as long,j as long,temp as NODE
    for i=1 to n-1
        temp=a(i)
        j=i-1
        Do While((j>0 or j=0) And (temp.key<a(j)))
            a(j+1)=a(j)
            j=j-1
        loop
        a(j+1)=temp
    next i
End Sub

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:108531 發(fā)表于 2016-3-12 16:10 | 只看該作者
2.折半插入排序
折半插入排序是對直接插入排序的一個改進,當(dāng)數(shù)組元素較多時候,直接插入排序的效率不高.而折半排序能減少比較的次數(shù),從而效率。我們來看看它是怎么減少比較次數(shù)的。
1.我們設(shè)3個變量low,high,mid,low為待比較的區(qū)間的最低位,high為待比較區(qū)間的最高位,mid為[low+mid]/2區(qū)間的中間位置.
2.我們比較中間位置和待插入元素的大小,若中間元素大于待插入元素那么只可能在中間元素的左邊插入,我們令high=mid-1。若中間元素小于待插入元素,那么插入位置只可能在中間元素右邊,此時我們令low=mid+1.
3.循環(huán)執(zhí)行步驟2,直到low>high,此時high+1為插入的位置.我們再將high+1以后的元素依次后移,再將待插入的元素插入.
C:
void binsort(NODE a[],int n)
{    int low,high,mid,temp;
     int i,j;
     for(i=1;i<n;i++)
     {    low=0;
          high=i-1;
          temp=a.key;
          while(low<=high)
          {    mid=(low+high)/2;
               if(temp<mid) high=mid-1;
               else low=mid+1;
           }
          for(j=i-1;j>=high+1;j--) a[j+1]=a[j];
          a[j+1]=temp;
      }
}
VB:
Private Sub binsort( a() as NODE, n as long)
Dim low as long,high as long,mid as long,temp as long,i as long,j as long
    for i=1 to n-1
        low=0
        high=i-1
        temp=a(i).key
        Do While(low<high Or low=high)
           mid=int((low+high)/2)
           if temp<a(mid).key then
               high=mid-1
           else
               low=mid+1
           end if
        loop
        for j=i-1 to high+1 step -1
            a(j+1)=a(j)
        next j
        a(j+1)=temp
    next i
End Sub

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲色图图片 | 美女在线视频一区二区三区 | 九九热在线观看视频 | 日韩一区二区三区在线视频 | 欧美日韩美女 | 美国黄色一级片 | 亚洲综合在线播放 | 成人久久久 | 日日骚网| 一区二区欧美在线 | 欧美日韩一区二区视频在线观看 | 香蕉视频91| 精品美女| 亚洲国产专区 | h片在线免费看 | av中文在线 | 欧美精品在线免费观看 | 色黄视频在线 | 九九亚洲 | 色呦呦在线 | 99精品热视频 | 亚洲午夜精品视频 | 亚洲精品无人区 | 偷拍亚洲色图 | 国产成人叼嘿视频在线观看 | 亚洲国产精品一区 | 91成人精品 | 免费在线性爱视频 | 日韩欧美一级片 | 国产精品a久久久久 | 日本黄色高清视频 | 国产精品高潮呻吟久久av黑人 | 欧美日韩在线一区 | 成人av网站在线观看 | 免费观看一级黄色录像 | 日韩一区二区久久 | 国产成人精品av | 国产伦精品| 亚洲精品一区中文字幕乱码 | 五月香婷婷 | 在线观看成年人视频 |