• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Just enjoy programming

            插入排序,選擇排序,冒泡排序,歸并排序(c語(yǔ)言實(shí)現(xiàn))

            今天復(fù)習(xí)了下一些常見(jiàn)的排序算法,并用c語(yǔ)言實(shí)現(xiàn)了下。代碼如下:
            #include<stdio.h>
            #include<stdlib.h>

            #define MAX 65536 /*用于歸并排序中的哨兵*/

            /*簡(jiǎn)單插入排序,時(shí)間復(fù)雜度為o(n2),穩(wěn)定排序,適合已經(jīng)排好序的*/
            void insertSort(int arr[],int len)
            {
                int i,j;
                int key;
                for(i=1;i<len;i++)
                {
                    key=arr[i];
                    for(j=i-1;j>=0;j--)
                    {
                        if(arr[j]>key)
                            arr[j+1]=arr[j];
                        else
                            break;
                    }
                    arr[j+1]=key;
                }
            }

            /*選擇排序,時(shí)間復(fù)雜度為o(n2),不穩(wěn)定排序,適合規(guī)模比較小的*/
            void selectSort(int arr[],int len)
            {
                int i,j,temp;
                for(i=0;i<len;i++)
                {
                    for(j=i+1;j<len;j++)
                    {
                        if(arr[i]>arr[j])
                        {
                            temp=arr[i];
                            arr[i]=arr[j];
                            arr[j]=temp;
                        }
                    }
                }
            }

            /*冒泡排序,時(shí)間復(fù)雜度為o(n2),穩(wěn)定排序,適合規(guī)模比較小的*/
            void bubbleSort(int arr[],int len)
            {
                int i,j,temp;
                for(i=0;i<len;i++)
                {
                    for(j=0;j<len-i-1;j++)
                    {
                        if(arr[j]>arr[j+1])
                        {
                            temp=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=temp;
                        }
                    }
                }
            }

            /*合并(歸并)排序,時(shí)間復(fù)雜度為o(nlogn),穩(wěn)定排序,適合規(guī)模比較大的排序*/
            void merge(int arr[],int p,int q,int r)
            {
                int *A,*B;
                int n1,n2,i,j,k;
                n1=q-p+1;
                n2=r-q;
                if((A=(int*)malloc((n1+1)*sizeof(int)))==NULL)
                {
                    perror("malloc error");
                    exit(1);
                }
                if((B=(int*)malloc((n2+1)*sizeof(int)))==NULL)
                {
                    perror("malloc error");
                    exit(1);
                }
                for(i=0;i<n1;i++)
                {
                    A[i]=arr[p+i];
                }
                A[i]=MAX;
                for(i=0;i<n2;i++)
                {
                    B[i]=arr[q+i+1];
                }
                B[i]=MAX;
                i=0;j=0;
                for(k=p;k<=r;k++)
                {
                    if(A[i]>B[j])
                    {
                        arr[k]=B[j];
                        j++;
                    }else{
                        arr[k]=A[i];
                        i++;
                    }
                }
            }

            void mergeSort(int arr[],int begin,int end)
            {
                int mid;
                if(begin<end)
                {
                    mid=(begin+end)/2;
                    mergeSort(arr,begin,mid);
                    mergeSort(arr,mid+1,end);
                    merge(arr,begin,mid,end);
                }
            }

            int main()
            {
                int a[8]={5,2,4,7,1,3,2,6};
                int b[8]={5,2,4,7,1,3,2,6};
                int c[8]={5,2,4,7,1,3,2,6};
                int d[8]={5,2,4,7,1,3,2,6};
               
                int i;
                /*測(cè)試插入排序*/
                insertSort(a,8);
                printf("after 插入排序\n");
                for(i=0;i<8;i++)
                {
                    printf("%d ",a[i]);
                }
                printf("\n");

                /*測(cè)試選擇排序*/
                selectSort(b,8);
                printf("after 選擇排序\n");
                for(i=0;i<8;i++)
                {
                    printf("%d ",b[i]);
                }
                printf("\n");
               
                /*測(cè)試冒泡排序*/
                bubbleSort(c,8);
                printf("after 冒泡排序\n");
                for(i=0;i<8;i++)
                {
                    printf("%d ",c[i]);
                }
                printf("\n");
               
                /*測(cè)試歸并排序*/
                mergeSort(d,0,7);

                printf("after 歸并排序\n");
                for(i=0;i<8;i++)
                {
                    printf("%d ",d[i]);
                }
                printf("\n");
            }

            posted on 2011-03-15 16:15 周強(qiáng) 閱讀(5347) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法

            无遮挡粉嫩小泬久久久久久久 | 久久久久亚洲精品天堂| 久久久久久精品无码人妻| 久久久久久亚洲精品成人| 天天久久狠狠色综合| 亚洲国产欧洲综合997久久| 91久久九九无码成人网站| 伊人色综合久久天天人手人婷| 狠狠色丁香久久婷婷综| 国色天香久久久久久久小说| 国产精品99久久不卡| 91精品国产高清91久久久久久| 亚洲国产精品综合久久网络 | 久久精品无码一区二区app| 蜜臀av性久久久久蜜臀aⅴ| 国内精品伊人久久久久妇| 国产精品青草久久久久福利99| 成人妇女免费播放久久久| 色偷偷88888欧美精品久久久| 深夜久久AAAAA级毛片免费看 | 精品久久无码中文字幕| 精品综合久久久久久98| 欧美午夜A∨大片久久 | 久久99精品综合国产首页| 无码人妻久久久一区二区三区| 一本色道久久88综合日韩精品 | 国产精品久久久久AV福利动漫| 狠狠色婷婷久久一区二区| 色8激情欧美成人久久综合电| 久久久精品久久久久特色影视| 久久中文字幕一区二区| 88久久精品无码一区二区毛片| 国产国产成人精品久久| 精品亚洲综合久久中文字幕| 久久91精品国产91久久麻豆| 久久精品国产清高在天天线| 2021久久精品国产99国产精品| 久久99热只有频精品8| 99久久综合国产精品二区| 国内精品伊人久久久久影院对白| 久久99久久无码毛片一区二区 |