湖濱散記部落格的樹心幽徑[login][主頁]
532:20191116用dev C++來編寫氣泡、選擇、插入排序法

ref 1: 20191023安裝Dev-C++來設計檔案內容讀取分析程式

ref 2: 20191111用python設計氣泡排序法(採升序排列,ascending)

ref 3:20191111用python編寫選擇排序法程式(採升序排列,ascending)

(1) 在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\bsort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {4, 5, 8, 1, 3,2,7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,t,k;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:氣泡排序中…");
    for (i=0;i<size-1;i++){
        for (j=0;j<size-i;j++){
            if (a[j]>a[j+1]) {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;       
            }
        }
        printf("\n i=%3d a[]=",i);
        for (k = 0; k < size; k++) printf("%3d",a[k]);
    }
   
    printf("\n3:排序後 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

 

(2)按F11編譯並執行,bsort.cpp執行結果如下:


1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前 a[]=  4  5  8  1  3  2  7
3:氣泡排序中…
 i=  0 a[]=  4  5  1  3  2  7  8
 i=  1 a[]=  4  1  3  2  5  7  8
 i=  2 a[]=  1  3  2  4  5  7  8
 i=  3 a[]=  1  2  3  4  5  7  8
 i=  4 a[]=  1  2  3  4  5  7  8
 i=  5 a[]=  1  2  3  4  5  7  8
3:排序後 a[]=  1  2  3  4  5  7  8

 

(3)在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\ssort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {9, 5, 8, 1, 3,2,7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,k,t;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:選擇排序中…");
    for (i=0;i<size-1;i++){
        int mini=i;
        for (j=i+1;j<size;j++){
            if (a[j]<a[mini]) mini=j;
        }
        printf("\n i=%d 交換前a[%d]=%d , a[%d]=%d mini=%d 交換後a[]=",i,i,a[i],mini,a[mini],mini);
        t=a[mini];
        a[mini]=a[i];
        a[i]=t;
        for (k = 0; k < size; k++) printf("%3d",a[k]);

    }
   
    printf("\n4:排序後 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

 

(4)按F11編譯並執行,ssort.cpp執行結果如下:

1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前 a[]=  9  5  8  1  3  2  7
3:選擇排序中…
 i=0 交換前a[0]=9 , a[3]=1 mini=3 交換後a[]=  1  5  8  9  3  2  7
 i=1 交換前a[1]=5 , a[5]=2 mini=5 交換後a[]=  1  2  8  9  3  5  7
 i=2 交換前a[2]=8 , a[4]=3 mini=4 交換後a[]=  1  2  3  9  8  5  7
 i=3 交換前a[3]=9 , a[5]=5 mini=5 交換後a[]=  1  2  3  5  8  9  7
 i=4 交換前a[4]=8 , a[6]=7 mini=6 交換後a[]=  1  2  3  5  7  9  8
 i=5 交換前a[5]=9 , a[6]=8 mini=6 交換後a[]=  1  2  3  5  7  8  9
4:排序後 a[]=  1  2  3  5  7  8  9

 

(5)在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\isort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {9, 5, 8, 1, 3 , 2 , 7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,k,t;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前數列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:插入排序中…");
    for (i=0;i<size-1;i++){
        printf("\n i=%d 待插入元素為a[%d]=%d 插入後 a[]=",i,i+1,a[i+1]);
        for (j=i+1;j>0;j--){
            if (a[j]>a[j-1]) break;
            else{
                t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }
        }
        for (k = 0; k < size; k++) printf("%3d",a[k]);
    }
   
    printf("\n4:排序後數列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

(6)按F11編譯並執行,isort.cpp執行結果如下:

1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前數列 a[]=  9  5  8  1  3  2  7
3:插入排序中…
 i=0 待插入元素為a[1]=5 插入後 a[]=  5  9  8  1  3  2  7
 i=1 待插入元素為a[2]=8 插入後 a[]=  5  8  9  1  3  2  7
 i=2 待插入元素為a[3]=1 插入後 a[]=  1  5  8  9  3  2  7
 i=3 待插入元素為a[4]=3 插入後 a[]=  1  3  5  8  9  2  7
 i=4 待插入元素為a[5]=2 插入後 a[]=  1  2  3  5  8  9  7
 i=5 待插入元素為a[6]=7 插入後 a[]=  1  2  3  5  7  8  9
4:排序後數列 a[]=  1  2  3  5  7  8  9

 


select id,article_id,topic,text from lt_articles_text where article_id =532; ok. update lt_articles set num_reads=num_reads +1 where id=532; ok.