选择排序:

我已经创建了一个选择排序算法,但有人对我说,它不是正确的选择排序。
如果不对,那是什么类型的排序?以及它与选择排序有何不同。
代码:
void selection_Sort(int arr[] , int size){
int temp , length = size;
for(int i = 0; i < size ; i++){
for(int j = i + 1; j < size ; j++){
if(arr[i] > arr[j]){
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}请告诉我如何改进它?
发布于 2016-04-18 17:53:01
要将此代码转换为选择排序,您必须在内部循环中找到最小元素的索引,并在内部循环完成后在这个索引处与第一个元素交换元素。
因此,掉期的总数量不超过N(而当前的代码可以产生大约N^2/2的掉期)
发布于 2016-04-18 17:57:57
您已经实现了气泡排序。
选择排序意味着您应该在内部循环中找到最低(或最大的)元素,然后用元素将其切换到左侧/右侧,该元素位于选择的边缘(如图片中)。
有三种类似的排序方法--选择排序、插入排序和气泡排序--您可以在这里看到它们的行为:http://i.imgur.com/fq0A8hx.gif
发布于 2018-08-04 02:29:49
必须在外层for循环之后实现最小元素。以下是代码:
def selectionSort(arr):
对于范围内的I(len(Arr)):
# Find the minimum element in remaining
# unsorted array
min_idx = i
for j in range(i+1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
# Swap the found minimum element with
# the first element
arr[i], arr[min_idx] = arr[min_idx], arr[i]返回arr = 7,4,5,9,8,2,1
打印(selectionSort(Arr))
选择排序是如何工作的?
https://stackoverflow.com/questions/36700830
复制相似问题