zoukankan      html  css  js  c++  java
  • iOS--排序算法集合

    ---------------------直接插入排序--------------------

    思想:将数组分成两部分,两部分默认是有序的,然后从第二部分开始循环遍历,逐一与第一部分比较,比较是从第一部分的最后开始,如果比第一部分的大,就交换顺序。

       //创建数组

        int array[] = {1,6,4,9,6,12,3};

        int i,j,temp;

        //数组第一个元素默认排好序,从第二元素开始遍历数组

        for (i = 1; i < 7; i ++) {

            //获得第二部分的第一个元素

            temp = array[i];

            j = i - 1;

            //与第一部分已经排好序的数组逐一比较,大于temp时,该元素后移

            while (j >= 0 && array[j] > temp) {

      //将大的元素插入到后面

                array[j + 1] = array[j];

                j --;

            }

                array[j + 1] = temp;

        }

        for (int i = 0; i < 7; i ++) {

            printf("%d  ",array[i]);

        }

     ---------------------希尔排序算法--------------------

    思想:先获取步长,根据步长获得每次的每个小部分,然后将每一个小部分进行直接插入排序。

        //创建数组

        int array[] = {7,4,8,3,5,9,7};

        int i,j,gap;

        //获取步长,即对增量进行选取

        for (gap = 7/2; gap > 0; gap = gap / 2) {

            //循环每一次增量,获取每个部分

            for (i = 0; i < gap; i ++) {

                //直接插入排序

                for (j = i + gap; j < 7; j += gap) {

                    int temp = array[j];

                    int k = j - gap;

                    while (k >= 0 && array[k] > temp) {

                        array[k + gap] = array[k];

                        k -= gap;

                    }

                    array[k + gap] = temp;

                }

            }

        }

        for (int i = 0; i < 7; i ++) {

            printf("%d  ",array[i]);

        }

     ---------------------直接选择排序算法-------------------- 

    int array[] = {7,4,8,3,5,9,7};

       int i,j,min,temp;

        //进行n-1次循环就可以,剩下的那个肯定是最大的

        for (i = 0; i < 7 - 1; i ++) {

            //假设第一个是最小的

            min = i;

            //找到最小的

            for (j = i + 1; j < 7; j ++) {

                if (array[min] > array[j]) {

                    min = j;

                }

            }

            //如果第一个不是最小的

            if (min != i) {

                temp = array[min];

                array[min] = array[i];

                array[i] = temp;

            }

        }

         ---------------------冒泡排序算法--------------------

    int array[] = {7,4,8,3,5,9,7};

        for (int i = 0; i < 7; i ++) {

            printf("%d  ",array[i]);

        }

        for (int i = 0; i < 7 - 1; i ++) {

            for (int j = 0; j < 7-1-i; j ++) {

                if (array[j] > array[j + 1]) {

                    int temp = array[j];

                    array[j] = array[j + 1];

                    array[j + 1] = temp;

                }

            }

        }

        for (int i = 0; i < 7; i ++) {

            printf("%d  ",array[i]);

        }

         ---------------------快速排序算法--------------------

    void quickSort(int array[], int numSize)

    {

        int i = 0;

        int j = numSize - 1;

        //指定参照的为第一个元素

        int val = array[0];

        //当数组元素个数大于2的时候才有必要排序

        if (numSize > 1) {

            //判断终止的条件:当i< j 的时候

            while (i < j) {

                //从后向前

                for (j = numSize - 1; j > i; j --) {

                    if (array[j] < val) {

                        array[i ++] = array[j];

                        break;

                    }

                }

                //从前向后

                for (i = 0; i < j; i ++) {

                    if (array[i] > val) {

                        array[j --] = array[i];

                        break;

                    }

                }

                //将第一个加入到数组里

                array[i] = val;

                //递归,对前i个排序

                quickSort(array, i);

                quickSort(array + i  + 1, numSize - i - 1);

            }

         }

    }

  • 相关阅读:
    Attribute在.NET编程中的应用
    Attribute应用权限验证
    Enterprise Library: Configuration Application Block
    App_Themes
    C# DNN 地址
    c++函数参数类型引用、指针、值
    四川新华社 关于IT诗人代腾飞 新书《赢道:成功创业者的28条戒律》新闻报道
    30岁之前创业想成功必看
    大师指点—为人处世秘诀之快乐成功之道!
    四川经济日报 关于代腾飞 新书《赢道:成功创业者的28条戒律》新闻报道
  • 原文地址:https://www.cnblogs.com/zhangshan/p/4166291.html
Copyright © 2011-2022 走看看