[アルゴリズム]デフォルトのソートアルゴリズム
2339 ワード
ソートの選択
最適値を検索して最初のインデックスに配置し、残りの値の最適値を検索してから、次のインデックスにソートします.
int main(void)
{
int nums[10] = {50, 30, 90, 100, 20, 10, 40, 80, 60, 70};
for (int i = 0; i < 10-1; ++i) {
for (int j = i + 1; j < 10; ++j) {
if (nums[i] > nums[j]) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
return 0;
}
時間複雑度:O(n^2)泡の位置合わせ
2つの隣接する要素を検査してソートするアルゴリズム.
2つの要素のサイズが一致しない場合、交換
void bubble_sort(int list[], int n){
int i, j, temp;
for(i=n-1; i>0; i--){
// 0 ~ (i-1)까지 반복
for(j=0; j<i; j++){
// j번째와 j+1번째의 요소가 크기 순이 아니면 교환
if(list[j]<list[j+1]){
temp = list[j];
list[j] = list[j+1];
list[j+1] = temp;
}
}
}
}
https://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.html
時間複雑度:O(n^2)整列挿入
前に並べられた配列部分と比較し、それらを検索して挿入します.
// 삽입 정렬
void insertion_sort(int list[], int n){
int i, j, key;
// 인텍스 0은 이미 정렬된 것으로 볼 수 있다.
for(i=1; i<n; i++){
key = list[i]; // 현재 삽입될 숫자인 i번째 정수를 key 변수로 복사
// 현재 정렬된 배열은 i-1까지이므로 i-1번째부터 역순으로 조사한다.
// j 값은 음수가 아니어야 되고
// key 값보다 정렬된 배열에 있는 값이 크면 j번째를 j+1번째로 이동
for(j=i-1; j>=0 && list[j]>key; j--){
list[j+1] = list[j]; // 레코드의 오른쪽으로 이동
}
list[j+1] = key;
}
}
https://gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html
時間複雑度:O(n^2)ソース:https://devuna.tistory.com/28
https://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.html
https://gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html
Reference
この問題について([アルゴリズム]デフォルトのソートアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@yang_gangster/알고리즘-기본-정렬-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol