程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++插入排序之二路插入(環與非環的比較)

C++插入排序之二路插入(環與非環的比較)

編輯:關於C++
#include 
using namespace std;
void Grial(int a[],int n)
{
    int i,j;
    i=j=0;
    int b[n];
    b[0]=a[i];
    int k;
    for(k=1;ka[k])
            {
                b[(j-1+n)%n]=a[k];
                j=(j-1+n)%n;
            }
         else
            {
                i++;
                int m;
                for(m = i;b[m-1]>a[k];m--)
                {
                    b[(m+n)%n] = b[(m-1+n)%n];
                }
                b[(m+n)%n]=a[k];
            }
    }
    i++;
    k = 0;
    do
    {
        a[k++]=b[(i)%n];
        i++;
    }while(i%n!=j);
}
int main()
{
    int a[]={10,4,2,5,88,1,23};
    Grial(a,7);
    for(int i=0;i<7;i++)
    {
        cout<
using namespace std;
//2路插入排序.
void Grial(int a[],int n)
{
    int  i;
    int j;
    int b[n];//新開辟的空間用來排序.
    b[0]=a[0];
    i=1;
    j=n-1;
    int k;
    for(k=1;k(n-j)?1:-1;//比較左邊的長度與右邊的長度,如果左邊的大,則flag記1,else記-1.
        if(a[k]>b[i-1])
        {
            b[i]=a[k];  
            i++;
        }
        else if(a[k]b[m+1])
                            b[m]=b[m+1];
                        else
                          {
                            b[m]=a[k];
                            break;
                            }
                    }
                j--;
        }
        else
        {
            int m;
            for(m = i; b[m-1]>a[k] && m>0;m--)
            {   
                    b[m]=b[m-1];
            }
            b[m]=a[k];
            i++;
        }
    }
    j = i;
    k=0;
    do{
            a[k++]=b[(i+n)%n];
            i++;
        }while((i%n)!=j);
}
int main()
{
    int a[]={2,4,77,3,1,6,3,10,8,-1};
    Grial(a,10);
    for(int i=0;i<10;i++)
    {
        cout<
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved