排序算法

来源:互联网 发布:炒股软件的定制 编辑:程序博客网 时间:2024/06/05 19:39

1.插入法

理论:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。

代码:

      int a[] = {70,45,30,50};
    for (int i = 1 ; i < 4; i++) {
        //待插入元素
        int temp = a[i];
        int j;
        for (j = i -1 ; j >=0; j--) {
            //将大于temp往后移动一位
            if (a[j] >temp) {
                a[j+1] = a[j];
            }else{
                break;
            }
        }
        a[j+1] = temp;
    }
    for (int i = 0 ; i < 4 ; i++) {
        printf("%d \t ", a[i]);
    }

2.选择排序法

理论:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

  //选择排序
    int b[] = {15,40,10 ,20};
    for (int i = 0 ; i < 4; i++) {
        int min = b[i];
        int n =i ;//最小数
        for (int j = i+1; j< 4; j++) {
            if (b[j] <min) {
                min = b[j];
                n = j ;
            }
        }
        b[n ] =b[i];
        b[i]  =  min;
    }
    
    for (int i = 0 ; i < 4 ; i++) {
        printf("%d---  ", b[i]);
    }

3.冒泡排序

理论:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

   int a[] = {23,45,30,50};
    for (int i = 0; i < 4; i++) {
        for (int j = i; j < 4-1 - i; j++) {
            if (a[j]>a[j+1]) {
                int temp = a[j];
                a[j] =a[j+1];
                a[j+1] = temp;
            }
        }
    }
    for (int i = 0 ; i < 4 ; i++) {
        printf("%d  ", a[i]);
    }

待续。。。






0 0
原创粉丝点击