您的位置:首页 > 移动开发 > IOS开发

排序算法

2015-11-12 00:28 381 查看
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]);

    }

待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序 代码 ios