/ / Избор Алгоритъм за сортиране - алгоритъм, сортиране

Избор Алгоритъм за сортиране - алгоритъм, сортиране

Избор Сортиране:

алгоритъм за сортиране

Създадох алгоритъм за подбор на подбор, но някой ми каза, че не е правилен сортирането на селекцията.

Ако не е така, така какъв тип сортиране е то? и как е различно от сортирането на селекцията.

Код:

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;
}
}
}
}

моля, кажете ми как мога да го подобря?

Отговори:

1 за отговор № 1

Да превърнем този код в избор на сортиране, трябва да намерите индекс на минимален елемент във вътрешния цикъл и елемент за замяна на този индекс с i-ти елемент след завършване на вътрешния цикъл.

Така общият брой суапове не надвишава N (докато вашият текущ код може да доведе до N ^ 2/2 swaps)


0 за отговор № 2

Внедрихте сортирането на Bubble.

Сортирането на селекцията означава, че трябва да намерите най-ниския (или най-големия) елемент във вътрешния цикъл и след това да го включите с елемент вляво / отдясно, който е в края на избора (както е на снимката).

Има три подобни алгоритми за сортиране - изберете сортиране, поставете сортиране и сортиране на мехурчета, които можете да гледате как се държат тук: http://i.imgur.com/fq0A8hx.gif


0 за отговор № 3
        var Selectionsort = function (A) {
for (var i = 0; i < A.length; i++) {
var imin = i;
for (var j = i + 1; j <= A.length; j++) {
if (A[j] < A[imin])
imin = j;
}
var tmp = A[i];
A[i] = A[imin];
A[imin] = tmp;
}
return A;
};
var A = [10, 20, 30, 40, 50, 60, 70, 80];
var Aftersorted = Selectionsort(A);
console.log(Aftersorted);

0 за отговор № 4

Можете да го подобрите по следния начин:

void selectionSort(double array[], int size) {
int min;
double temp;
for (int step = 0; step < size-1; step++)  {
min =  step;
for (int i = step+1; i < size; i++) {
if (array [i] < array[min])   {
min = i;
}
}
temp = array[step];
array [step] = array[min];
array [min] = temp;
}