排序演算法之選擇排序

2021-10-13 21:00:10 字數 1839 閱讀 6881

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理是:第一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推。

方法:在原有陣列上進行排序,使用雙重迴圈:

public class selectionsort 

public static void sort(int arr)

}swap(arr,minindex,i);}}

private static void swap(int arr,int minindex,int j)

public static void main(string args) ;

selectionsort.sort(arr);

for (int e: arr)

}}

在這段**中僅能使int型別的陣列進行排序,後面使用帶有約束的泛型。

注意:sort方法是static型別的,所以在其內部呼叫的也應是 static型別,所以swap也是static型別的,儘管他是private。

在這個版本中使用了泛型,並且泛型必須是可比較的,因為swap的乙個引數是陣列,所以swap也必須是泛型,但是沒有約束,

因為swap的引數陣列已經被約束,並且swap僅僅是交換位置,也不必是可約束的。

這個版本沒有使用自定義類,在下乙個版本中會使用。

public class selectionsort 

public static >void sort(e arr)

}swap(arr,minindex,i);}}

private static void swap(e arr,int minindex,int j)

public static void main(string args) ;

selectionsort.sort(arr);

for (int e: arr)

}}

使用自定義類student來進行選擇排序。

首先來看一下student類:

注意:這裡實現了comparable介面,就必須重寫compareto()函式

public class student implements comparable

@override

public boolean equals(object student)

if (student==null)

if (this.getclass()!=student.getclass())

//直接將 object類轉成student類可能出現異常,所以有了上面三個if語句

student another=(student) student;

return this.name.equals(another.name);

}@override

public int compareto(student another)

@override

public string tostring()

}

public class selectionsort 

public static >void sort(e arr)

}swap(arr,minindex,i);}}

private static void swap(e arr,int minindex,int j)

public static void main(string args) ;

selectionsort.sort(students);

for (student e: students)

}}

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...