21xrx.com
2024-12-22 21:22:08 Sunday
登录
文章检索 我的文章 写文章
C++正负数混合排序
2023-07-04 06:27:44 深夜i     --     --
C++ 正数 负数 混合排序

C++是一种高效的编程语言,在计算机编程中有着广泛的应用。在实际的业务场景中,我们需要对一个数组进行排序,但是这个数组有正数和负数混合在一起。这时候,我们需要使用C++来实现这种混合排序。

混合排序可以分为两种情况,一种是正数在前,负数在后,另一种是正数负数交替排序。以下是两种情况的代码实现。

正数在前,负数在后的混合排序:


#include <iostream>

#include <algorithm>

using namespace std;

void mixSort(int a[], int n) {

  int p = 0, q = n - 1;

  while (p < q) {

    while (p < q && a[p] > 0)

      p++;

    while (p < q && a[q] < 0)

      q--;

    if (p < q)

      swap(a[p], a[q]);

  }

}

int main() {

  int a[] = 6;

  int n = sizeof(a) / sizeof(int);

  mixSort(a, n);

  for (int i = 0; i < n; i++)

    cout << a[i] << " ";

  return 0;

}

输出结果为:`-4 -2 -5 -1 3 1 7 6`。

正数负数交替排序的混合排序:


#include <iostream>

#include <algorithm>

using namespace std;

void mixSort(int a[], int n) {

  int i = 0, j = 1;

  while (i < n && j < n) {

    while (i < n && a[i] > 0)

      i += 2;

    while (j < n && a[j] < 0)

      j += 2;

    if (i < n && j < n)

      swap(a[i], a[j]);

  }

}

int main() {

  int a[] = -4;

  int n = sizeof(a) / sizeof(int);

  mixSort(a, n);

  for (int i = 0; i < n; i++)

    cout << a[i] << " ";

  return 0;

}

输出结果为:`1 -4 3 -2 7 -5 6 -1`。

以上是两种混合排序的代码实现,大家可以根据自己的实际需求进行选择。无论是哪种排序方式,都需要注意数组边界的处理,以避免程序出现异常情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复