ソート[アルゴリズムc++]選択
1257 ワード
選択ソートアルゴリズムは、最小の数字を一番前に入力し、入力した数字の一番前の数字と配列中の数字を交換する昇順、降順で並べられたアルゴリズムです.
等差数列で表し、以下のようになります.
10 + 9 + 8 + ... + 1
55回の参照が発生します.
10 * (10 + 1)/2
N * (N + 1)/2
時間複雑度を判断するbigoマーキング法では,+1または/2などの小数を省略する.
O(N*N)式が表示されます.
選択ソートの時間的複雑度はO(N^2)である.
つまり配列の長さが10000であれば1000*10000,000,000=1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000の参照が発生し,非常に非効率なアルゴリズムといえる^^;
ビオマーク
:アルゴリズムでは大文字Oを用いて時間の複雑さを表す記号.O(n)、O(2)などと表す.
注意:https://ndb796.tistory.com/
#include <stdio.h>
int main(void) {
int i, j, min, index, temp;
int array[10] = {10,1,5,8,7,6,4,3,2,9};
for(i=0; i<10; i++){
min = 9999;
for(j=i; j< 10; j++){
if(min > array[j]){
min= array[j];
index = j;
}
}
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
for(i = 0; i< 10;i++){
printf("%d ", array[i]);
}
return 0;
}
上記の例のように、選択ソートアルゴリズムを使用して長さ10の配列をソートします.等差数列で表し、以下のようになります.
10 + 9 + 8 + ... + 1
55回の参照が発生します.
10 * (10 + 1)/2
N * (N + 1)/2
時間複雑度を判断するbigoマーキング法では,+1または/2などの小数を省略する.
O(N*N)式が表示されます.
選択ソートの時間的複雑度はO(N^2)である.
つまり配列の長さが10000であれば1000*10000,000,000=1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000の参照が発生し,非常に非効率なアルゴリズムといえる^^;
ビオマーク
:アルゴリズムでは大文字Oを用いて時間の複雑さを表す記号.O(n)、O(2)などと表す.
注意:https://ndb796.tistory.com/
Reference
この問題について(ソート[アルゴリズムc++]選択), 我々は、より多くの情報をここで見つけました https://velog.io/@mhj6380/알고리즘-c-선택정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol