美文网首页
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交换排序

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

  • 排序算法的一些优化和改进

    1、冒泡排序 O(n^2) 冒泡排序,记下最后一次交换的位置,如果后边没有交换则交换位置为0,必然是有序的,然后下...

  • 【排序】和0交换排序

    题目描述:长度为 N 的数组乱序存放着 0 到 N-1,只能进行 0 和其它数的交换,完成从大到小的排序。 解题思...

  • Java实现选择排序,冒泡排序,二分法查找

    选择排序 选择排序是从数组下标0(下标为0的元素)开始依次固定与之后的所有元素进行比较,比被固定的元素小则与之交换...

  • 排序算法之交换排序

    利用交换数据元素的位置进行排序的方法称为交换排序。常见的交换排序方法有冒泡排序和快速排序。 1. 冒泡排序 1.1...

  • java常见算法

    冒泡排序 时间复杂度: O(n^2) ```java /** * 第一次:0 ~ n-1 排序 最大的交换到n-1...

  • 排序_选择排序(简单选择排序&堆排序)

    简单选择排序(直接选择排序): 基本思路:第一次从A[0..n-1]中选取最小值,与A[0]交换;第二次从A[1....

  • 【数据结构】【C#】019-交换类排序:🌓冒泡排序(稳定)(重要

    交换排序:冒泡排序 ( 相邻比序法 )(稳定) 冒泡排序是一种简单的交换类排序方法,它是通过相邻的数据元素的交换,...

  • 交换排序法

    交换排序法是指借助于数据元素之间的相互交换进行排序的一种方法。冒泡排序与快速排序法都属于交换排序法。 冒泡排序法的...

  • 排序

    稳定排序 不稳定排序 交换排序 选择排序

网友评论

      本文标题:0交换排序

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