我想我已经完成了选择,但我不确定。这真的是选择排序的实现吗?
static void selectionSort()
{
int min = Integer.MIN_VALUE;
int n = 0;
for(int I=0; I<arraySize; I++)
{
min = dataArray[I];
for(int j=I; j<n; j++)
{
if(dataArray[min]<dataArray[j])
{
min = j;
if(dataArray[min] < dataArray[I])
{
int temp = dataArray[I];
dataArray[I] = dataArray[min];
dataArray[min] = temp;
}
}
}
}
}
答案 0 :(得分:4)
我不确定我理解你的算法是如何运作的。具体来说,你做了
min = dataArray[i];
然后再
dataArray[min]<dataArray[j]
即。您将min
视为数组中的值和索引。
选择排序的工作原理如下:
(source)
您的代码准确实现选择排序所需的更改如下:
minIndex
。I
与minIndex
的交换元素。哦,正如DonCallisto在评论中指出的那样,您可能希望n = dataArray.length
代替n = 0
: - )
答案 1 :(得分:2)
public class SelectionSort {
/**
* @Author Chandrasekhara Kota
*/
public static void main(String[] args) {
int arr[]={9,1,8,5,7,-1,6,0,2,2718};
int sortedArr[]=selectionSort(arr);
for (int i = 0; i <sortedArr.length; i++)
{
System.out.println(sortedArr[i]);
}
}
private static int[] selectionSort(int[] arr) {
int minIndex, tmp;
int n = arr.length;
for (int i = 0; i < n - 1; i++)
{
minIndex = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
return arr;
}
}
答案 2 :(得分:0)
这是java中的选择排序实现 -
public class SelectionSort {
static int intArray[] = { 10, 5, 100, 1, 10000 };
public static void doSort() {
for (int outer = 0; outer < intArray.length; outer++) {
int minPosition=outer;
for(int inner=outer;inner<intArray.length;inner++){
if(intArray[inner]<intArray[minPosition]){
minPosition=inner;
}
}
int temp=intArray[minPosition];
intArray[minPosition]=intArray[outer];
intArray[outer]=temp;
}
}
public static void printArray() {
for (int i = 0; i < intArray.length; i++) {
System.out.print(" " + intArray[i]);
}
}
public static void main(String args[]) {
System.out.print("Array Before Sorting->");
printArray();
doSort();
System.out.print("\nArray After Sorting ->");
printArray();
}
}
以上代码摘自 - http://www.javabrahman.com/algorithms-in-java/selection-sort-in-java/。此链接有关上述代码工作的详细说明,以防您需要相同的内容。