美文网首页
0交换排序

0交换排序

作者: lintong | 来源:发表于2015-02-11 15:00 被阅读3261次

    长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数。
    注意是元素0只能与娶她元素交换,而不是位置0.

    /**
    * 交换数组里n和0的位置
    * array: 数组
    * len: 数组长度
    * n: 数组里要和0交换的数
    */
    extern void swap_with_zero(int* array, int len, int n);
    
    class Solution {
    public:
       /**
        * 调用方法swap_with_zero来对array进行排序
        */
       void sort(int* array, int len) {
       }
    };
    

    我的答案:

    #include <stdio.h>
    
    void swap_with_zero(int* array, int len, int n){
        int zIndex = -1;
        int nIndex = -1;
        for(int i = 0; i < len; ++i){
            if(array[i] == 0){
                zIndex = i;
            }
            if(array[i] == n){
                nIndex = i;
            }
        }
        int temp = array[zIndex];
        array[zIndex] = array[nIndex];
        array[nIndex] = temp;
        
    }
    
    class Solution {
    public:
        /**
        * 调用方法swap_with_zero来对array进行排序
        */
        void sort(int* array, int len) {
            if(len <= 1){
                return;
            }
            for(int i = len - 1; i > 0; --i){
                swap_with_zero(array, len, array[i]);
                int curMax = array[i];
                for(int j = i; j >= 0; --j){
                     if(array[j] > curMax){
                         curMax = array[j];
                     }
                }
                swap_with_zero(array, len, curMax);
            }
        }
    };
    
    int main(){
    
        Solution solution;
        int a[] = {3,8,2,4,5,0,1,7,9,6};
        solution.sort(a, 10);
        return 0;
    
    }
    

    相关文章

      网友评论

          本文标题:0交换排序

          本文链接:https://www.haomeiwen.com/subject/junjxttx.html