我的冒泡排序和选择排序是否正确实施?
Is my bubble sort and selection sort properly implemented?
这是我的冒泡排序算法。
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
temp = 0;
while(swapped) {
swapped = false;
j++;
for(int i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
}
}
对于选择排序:
public int[] selectionSort(int[] arr) {
int i = 0;
int j = 0;
int minValue = 0;
int minIndex = 0;
int temp = 0;
for(i = 0; i < arr.length - j; j++) {
minValue = arr[i];
minIndex = i;
for(j = i; i < arr.length; j++) {
if (minValue < arr[i]) {
minValue = arr[j];
minIndex = j;
}
}
if (minValue < arr[i]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
return arr;
}
不确定这些实现。
当我添加 System.out.println(arr[i]);在那里,冒泡排序的数字如下:
4个
3个
2个
1个
3个
2个
1个
2个
1个
1个
[我@6d06d69c
放在第一个 if 语句之后。
现在当我创建一个 System.out.println(arr[i]);对于选择排序,结果为:
1个
2个
3个
4个
5个
[我@6d06d69c
放在第二个 if 语句之后。
谢谢
您的实现中存在一些错误,我已尝试更正这些错误。
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
temp = 0;
while(swapped) {
swapped = false;
j++;
for(int i = 0; i < arr.length-j; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
}
}
public int[] selectionSort(int[] arr) {
int i = 0;
int j = 0;
int minValue = 0;
int minIndex = 0;
int temp = 0;
for(i = 0; i < arr.length - 1; i++) {
minValue = arr[i];
minIndex = i;
for(j = i+1; j < arr.length; j++) {
if (minValue < arr[j]) {
minValue = arr[j];
minIndex = j;
}
}
if (minValue < arr[i]) {
temp = arr[i];
arr[i] = minValue;
arr[minIndex] = temp;
}
}
return arr;
}
这是我的冒泡排序算法。
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
temp = 0;
while(swapped) {
swapped = false;
j++;
for(int i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
}
}
对于选择排序:
public int[] selectionSort(int[] arr) {
int i = 0;
int j = 0;
int minValue = 0;
int minIndex = 0;
int temp = 0;
for(i = 0; i < arr.length - j; j++) {
minValue = arr[i];
minIndex = i;
for(j = i; i < arr.length; j++) {
if (minValue < arr[i]) {
minValue = arr[j];
minIndex = j;
}
}
if (minValue < arr[i]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
return arr;
}
不确定这些实现。 当我添加 System.out.println(arr[i]);在那里,冒泡排序的数字如下: 4个 3个 2个 1个 3个 2个 1个 2个 1个 1个 [我@6d06d69c
放在第一个 if 语句之后。
现在当我创建一个 System.out.println(arr[i]);对于选择排序,结果为: 1个 2个 3个 4个 5个 [我@6d06d69c
放在第二个 if 语句之后。
谢谢
您的实现中存在一些错误,我已尝试更正这些错误。
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
temp = 0;
while(swapped) {
swapped = false;
j++;
for(int i = 0; i < arr.length-j; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
}
}
public int[] selectionSort(int[] arr) {
int i = 0;
int j = 0;
int minValue = 0;
int minIndex = 0;
int temp = 0;
for(i = 0; i < arr.length - 1; i++) {
minValue = arr[i];
minIndex = i;
for(j = i+1; j < arr.length; j++) {
if (minValue < arr[j]) {
minValue = arr[j];
minIndex = j;
}
}
if (minValue < arr[i]) {
temp = arr[i];
arr[i] = minValue;
arr[minIndex] = temp;
}
}
return arr;
}