美文网首页
后端研发面试题目总结

后端研发面试题目总结

作者: Ucan先生 | 来源:发表于2019-07-22 23:33 被阅读0次

    最近一段时间面试n多公司,总结算法题目如下。

    1 将数组中奇数置前偶数置后

    void classify(int arr[],int n){
        int left = 0;
        int right = n-1;
        while (left < right){
            while(left < right && arr[right]%2==0){
                right--;
            }
    
            while(left < right && arr[left]%2==1){
                left++;
            }
    
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
        }
    }
    

    2快速排序

    void swap(int arr[],int left,int right){
        int tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
    }
    
    void Qsort(int arr[],int left,int right){
        if (left < right){
            int tmp = arr[left];
            int i = left;
            int j = right;
            while (i<j){
                while (arr[j]>tmp && i<j){
                    j--;
                }
    
                while (arr[i]<tmp && i<j){
                    i++;
                }
    
                if (i<j){
                    swap(arr[i],i,j);
                }
                arr[left]=arr[i];
                arr[i]=tmp;
    
                Qsort(arr,left,i-1);
                Qsort(arr,i+1,right);
        }
    }
    

    堆排序

    #include <stdio.h>
    
    void swap(int arr[],int i,int j){
        int t = arr[i];
        arr[i] = arr[j];
        arr[j] =t;
    }
    
    
    void maxHeapAdjust(int arr[],int p,int n){
        int left = 2*p+1;
        int right = 2*p+2;
        int max = p;
        if (left < n && arr[left]>arr[p]){
            max = left;
        }
        if (right < n && arr[right]>arr[max]){
            max = right;
        }
        if (max!=p){
            swap(arr,p,max);
            maxHeapAdjust(arr,max,n);
        }
    }
    
    
    
    //初始化最大堆
    void buildMaxHeap(int arr[],int n){
        for(int i=(n-1)/2;i>=0;i--){
            maxHeapAdjust(arr,i,n);
        }
    }
    
    
    
    /**
     * 堆排序
     * @param arr
     * @param size
     */
    void heapSort(int arr[],int size){
        buildMaxHeap(arr,size);
    
    //    for (int i = 0; i < size ; ++i) {
    //        printf("%d---\n",arr[i]);
    //    }
    
        for (int i = size-1; i >=0 ; i--) {
            int tmp = arr[0];
            arr[0] = arr[i];
            arr[i]=tmp;
            maxHeapAdjust(arr,0,i-1);
        }
    
    }
    int main(){
        int arr[] = {3,5,8,9,1,4,7,6,2,12,3};
        heapSort(arr, sizeof(arr)/ sizeof(int));
        for (int i = 0; i < sizeof(arr)/ sizeof(int) ; ++i) {
            printf("%d---\n",arr[i]);
        }
        return 0;
    }
    
    
    image.png

    相关文章

      网友评论

          本文标题:后端研发面试题目总结

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