2016 - 2024

感恩一路有你

将数组从小到大排序并去除相同值 数组排序

浏览量:3240 时间:2023-11-15 20:20:15 作者:采采

本文将详细介绍如何将数组从小到大排序并去除相同值。通过多个论点和实例演示,帮助读者掌握排序和去重的技巧,从而提升编程能力。

第一部分:排序

1. 冒泡排序算法

冒泡排序是一种简单但效率较低的排序算法,其基本思想是从数组的首元素开始,依次比较相邻的两个元素,如果前面的元素大于后面的元素,则交换它们的位置。重复该过程,直到整个数组有序。

实例:

int[] arr  {5, 3, 9, 1, 7};
int temp;
for (int i  0; i lt; arr.length - 1; i  ) {
  for (int j  0; j lt; arr.length - 1 - i; j  ) {
    if (arr[j] gt; arr[j   1]) {
      temp  arr[j];
      arr[j]  arr[j   1];
      arr[j   1]  temp;
    }
  }
}

2. 快速排序算法

快速排序是一种高效的排序算法,其基本思想是通过选择一个枢轴元素,将数组分成左右两部分,使得左边的元素都小于等于枢轴元素,右边的元素都大于枢轴元素。然后递归地对左右两部分进行快速排序。

实例:

int[] arr  {5, 3, 9, 1, 7};
quickSort(arr, 0, arr.length - 1);
void quickSort(int[] arr, int left, int right) {
  if (left gt; right) {
    return;
  }
  int pivotIndex  partition(arr, left, right);
  quickSort(arr, left, pivotIndex - 1);
  quickSort(arr, pivotIndex   1, right);
}
int partition(int[] arr, int left, int right) {
  int pivot  arr[left];
  while (left lt; right) {
    while (left lt; right amp;amp; arr[right] gt; pivot) {
      right--;
    }
    arr[left]  arr[right];
    while (left lt; right amp;amp; arr[left] lt; pivot) {
      left  ;
    }
    arr[right]  arr[left];
  }
  arr[left]  pivot;
  return left;
}

第二部分:去重

1. 使用Set集合

Set是Java中的一个接口,它的实现类可以实现去重功能。将数组元素逐个加入Set集合中,由于Set集合不允许重复元素的存在,所以会自动去重。

实例:

int[] arr  {5, 3, 9, 1, 7, 3, 5};
Setlt;Integergt; set  new HashSetlt;gt;();
for (int num : arr) {
  (num);
}
int[] result  new int[()];
int index  0;
for (int num : set) {
  result[index  ]  num;
}

2. 使用双重循环

通过双重循环遍历数组,比较每对元素是否相同,如果相同则跳过,如果不相同则将该元素保留。

实例:

int[] arr  {5, 3, 9, 1, 7, 3, 5};
int count  arr.length;
for (int i  0; i lt; count - 1; i  ) {
    for (int j  i   1; j lt; count; j  ) {
        if (arr[i]  arr[j]) {
            arr[j]  arr[count - 1];
            count--;
            j--;
        }
    }
}
int[] result  (arr, count);

通过本文的介绍,相信读者已经掌握了数组排序和去重的技巧。在实际编程中,可以根据具体需求选择合适的排序算法和去重方法,提高程序的效率和可读性。

数组 排序 去重 技巧

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。