將數(shù)組從小到大排序并去除相同值 數(shù)組排序
本文將詳細(xì)介紹如何將數(shù)組從小到大排序并去除相同值。通過多個(gè)論點(diǎn)和實(shí)例演示,幫助讀者掌握排序和去重的技巧,從而提升編程能力。 第一部分:排序 1. 冒泡排序算法 冒泡排序是一種簡(jiǎn)單但效率較低的
本文將詳細(xì)介紹如何將數(shù)組從小到大排序并去除相同值。通過多個(gè)論點(diǎn)和實(shí)例演示,幫助讀者掌握排序和去重的技巧,從而提升編程能力。
第一部分:排序
1. 冒泡排序算法
冒泡排序是一種簡(jiǎn)單但效率較低的排序算法,其基本思想是從數(shù)組的首元素開始,依次比較相鄰的兩個(gè)元素,如果前面的元素大于后面的元素,則交換它們的位置。重復(fù)該過程,直到整個(gè)數(shù)組有序。
實(shí)例:
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. 快速排序算法
快速排序是一種高效的排序算法,其基本思想是通過選擇一個(gè)樞軸元素,將數(shù)組分成左右兩部分,使得左邊的元素都小于等于樞軸元素,右邊的元素都大于樞軸元素。然后遞歸地對(duì)左右兩部分進(jìn)行快速排序。
實(shí)例:
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中的一個(gè)接口,它的實(shí)現(xiàn)類可以實(shí)現(xiàn)去重功能。將數(shù)組元素逐個(gè)加入Set集合中,由于Set集合不允許重復(fù)元素的存在,所以會(huì)自動(dòng)去重。
實(shí)例:
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. 使用雙重循環(huán)
通過雙重循環(huán)遍歷數(shù)組,比較每對(duì)元素是否相同,如果相同則跳過,如果不相同則將該元素保留。
實(shí)例:
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);
通過本文的介紹,相信讀者已經(jīng)掌握了數(shù)組排序和去重的技巧。在實(shí)際編程中,可以根據(jù)具體需求選擇合適的排序算法和去重方法,提高程序的效率和可讀性。