将数组从小到大排序并去除相同值 数组排序
浏览量: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);
通过本文的介绍,相信读者已经掌握了数组排序和去重的技巧。在实际编程中,可以根据具体需求选择合适的排序算法和去重方法,提高程序的效率和可读性。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。