[GO] Tri sélect écrit en C

Tri sélectif (langage C)

Qu'est-ce que le tri sélectif?

-Algorithme entier en place. Le tri sélectif convient aux petits fichiers. -Répétez la recherche de la valeur minimale dans l'ordre croissant (ordre le plus petit) et la valeur maximale dans l'ordre décroissant (ordre le plus grand). -N-1 échanges sont effectués pour aligner n éléments. Comparaisons N-1 à la passe 1 Comparaisons N-2 au passage 2 ... (car les données à comparer sont réduites de 1) Par conséquent, (n-1) + (n-2) + ... + 1 = n (n-1) / 2 comparaisons sont effectuées.

avantage

· Facile à comprendre · Tri sur place (aucun stockage supplémentaire requis) ・ Plus rapide que le tri à bulles

Désavantage

・ Détérioration du montant du calcul due à l'échelle: O (n²)

Flux global

  1. Trouvez la valeur minimale (maximale) dans la liste.
  2. Échangez la valeur à la position actuelle.
  3. Répétez ce processus pour tous les éléments jusqu'à ce que le tableau entier soit aligné.

En exécution

Implémenter en langage C. Afficher les scores en anglais et en mathématiques par ordre décroissant (le plus grand). Utilisez le tri sélectif pour trier les données.

code

selection_sort.c


#include <stdio.h>
#define NMAX 1000
int main(){
    int eigo[NMAX], math[NMAX], gokei[NMAX], n, max, work;
    printf("data="); scanf("%d", &n);
    for (int i = 0; i <n ; ++i) {
        printf("[%3dbanme]=", i); scanf("%d %d", &eigo[i], &math[i]);
        gokei[i]=eigo[i]+math[i];
    }
    for (int i = 0; i <n-1 ; ++i) {
        max=i;
        for (int j = i+1; j <n ; ++j) {
            if (gokei[j]>gokei[max]) max=j;
        }
        if(i!=max) {
            work=eigo[i];eigo[i]=eigo[max];eigo[max]=work;
            work=math[i];math[i]=math[max];math[max]=work;
            work=gokei[i];gokei[i]=gokei[max];gokei[max]=work;
        }
    }
    printf("*** RESULTS ***\n");
    printf("RANK   ENGLISH   MATH   TOTAL\n");
    for (int i = 0; i <n ; ++i) {
        printf("%4d%6d%6d%6d\n", i, eigo[i], math[i], gokei[i]);
    }
}

Trier le montant du calcul

type Montant du calcul
Montant de calcul dans le pire des cas O(n²)
Meilleur calcul du temps O(n)
Montant moyen du calcul O(n²)
Pire calcul spatio-temporel O(1)Zone auxiliaire

Je peux l'ajouter si quelque chose se produit à nouveau

Recommended Posts

Tri sélect écrit en C
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
J'ai écrit l'aile coulissante dans la création.
J'ai essayé d'implémenter le tri sélectif en python
J'ai écrit python en japonais
J'ai écrit le fonctionnement de base de Seaborn dans Jupyter Lab
J'ai essayé d'illustrer le temps et le temps du langage C
Je l'ai écrit en langage Go pour comprendre le principe SOLID
J'ai écrit le fonctionnement de base de Numpy dans Jupyter Lab.
Implémentation de l'algorithme «Algorithm Picture Book» en Python3 (tri sélectif)
J'ai écrit un script qui divise l'image en deux
Avertissement de tri dans la fonction pd.concat
J'ai participé au tour de qualification ISUCON10!
J'ai écrit Fizz Buzz en Python
J'ai écrit Gray Scale avec Pytorch
SélectionSort
J'ai écrit le code pour écrire le code Brainf * ck en python
Implémenter une partie du processus en C ++
J'ai essayé de sauvegarder les données récupérées au format CSV!
Je ne peux pas obtenir l'élément dans Selenium!
J'ai écrit le code pour l'échantillonnage Gibbs
[Python débutant] J'ai rassemblé les articles que j'ai écrits
J'ai écrit Project Euler 1 en une seule ligne.
[Langage C] Je souhaite générer des nombres aléatoires dans la plage spécifiée
Je souhaite trier une liste dans l'ordre des autres listes
AOJ Trier I-
Comment utiliser la bibliothèque C en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Un mémo que j'ai écrit un tri rapide en Python
[Examen d'ingénieur d'information de base] J'ai écrit l'algorithme de la méthode de division mutuelle euclidienne en Python.
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai écrit une classe en Python3 et Java
J'ai écrit matplotlib
J'ai écrit "Introduction à la vérification des effets" en Python
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
Je ne peux pas saisir de caractères dans la zone de texte! ?? !! ?? !! !! ??
J'ai écrit un module PyPI qui étend le style de paramètre dans le module sqlite3 de Python
J'ai écrit un modèle de conception dans l'édition Kotlin Prototype
J'ai essayé d'implémenter la fonction gamma inverse en python
J'ai essayé d'ajouter un module Python 3 en C
J'ai écrit un analyseur japonais en japonais en utilisant pyparsing.
J'ai vérifié le calendrier supprimé dans le calendrier de l'Avent Qiita 2016
J'ai essayé d'implémenter Human In The Loop - Partie ① Tableau de bord -
Je veux afficher la progression en Python!
J'ai essayé de représenter graphiquement les packages installés en Python
Trier en Python. Pensons ensuite à l'algorithme.
J'ai écrit un modèle de conception dans l'édition Kotlin Factory
J'ai essayé d'utiliser google test et CMake en C
J'ai écrit un modèle de conception dans l'édition Kotlin Builder
J'ai écrit un modèle de conception dans l'édition Kotlin Singleton
J'ai écrit un modèle de conception dans l'édition Kotlin Adapter
J'ai écrit un modèle de conception en kotlin, édité par Iterator
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai senti que j'avais porté le code Python en C ++ 98.
[Note] Le module installé ne peut pas être appelé dans jupyter.
J'ai écrit un modèle de conception dans l'édition de modèle kotlin
Ce que j'ai appris en participant aux qualifications ISUCON10
Je veux utiliser le jeu de données R avec python