0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C言語】シャッフルとソート

Last updated at Posted at 2024-12-13

シャッフル

備考 : 要素をごちゃ混ぜにすること

C言語

example.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int array[5] = { 1, 2, 3, 4, 5 };

	// 乱数の初期化
	srand((unsigned int)time(NULL));

	// 要素をシャッフル
	int length = sizeof(array) / sizeof(array[0]);
	for (int i = 0; i < length; i++)
	{
		int r = rand() % length;
		int tmp = array[i];
		array[i] = array[r];
		array[r] = tmp;
	}

	// シャッフルされた結果を出力
	for (int i = 0; i < length; i++)
	{
		printf("%d番目 : %d\n", i, array[i]);
	}

	return 0;
}

C++

example.cpp
#include <iostream>
#include <vector>
#include <random>

int main()
{
    std::vector<int> v = { 1, 2, 3, 4, 5 };

    // 乱数の初期化(メルセンヌツイスター法)
    std::random_device rd;
    std::mt19937 mt(rd());

    // 要素をシャッフル
    std::shuffle(v.begin(), v.end(), mt);

    // シャッフルされた結果を出力
    for (int i : v)
    {
        std::cout << i << std::endl;
    }

    return 0;
}

C#

example.cs
using System;
using System.Collections.Generic;

static int Main(string[] args)
{
    List<int> list =
        new List<int>()
        {
            1, 2, 3, 4, 5
        };

    // 乱数の初期化
    Random random = new Random();

    // 要素をシャッフル
    int n = list.Count;
    while (n > 1)
    {
        n--;
        int k = rng.Next(n + 1);
        int tmp = list[k];
        list[k] = list[n];
        list[n] = tmp;
    }

    // シャッフルされた結果を出力
    foreach (int i in list)
    {
        Console.WriteLine($"{i}\n");
    }
}

ソート

備考 : 要素を基準に則って並び替えること

C言語

example.c
#include <stdio.h>

int main()
{
	int array[5] = { 5, 4, 2, 1, 3 };

	// 昇順に要素をソート(バブルソート)
	int length = sizeof(array) / sizeof(array[0]);
	for (int i = 0; i < length; i++)
	{
		for (int j = i + 1; j < length; j++)
		{
			if (array[i] > array[j])
			{
				int tmp = array[i];
				array[i] = array[j];
				array[j] = tmp;
			}
		}
	}

	// ソートされた結果を出力
	for (int i = 0; i < length; i++)
	{
		printf("%d番目 : %d\n", i, array[i]);
	}

	return 0;
}

C++

example.cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> v = { 5, 4, 2, 1, 3 };

    // 昇順に要素をソート
    std::sort(v.begin(), v.end());

    // ソートされた結果を出力
    for (int i : v)
    {
        std::cout << i << std::endl;
    }

    return 0;
}

C#

example.cs
using System;
using System.Collections.Generic;

static int Main(string[] args)
{
    List<int> list =
        new List<int>()
        {
            5, 4, 2, 1, 3
        };

    // 昇順に要素をソート
    list.Sort();

    // ソートされた結果を出力
    foreach (int i in list)
    {
        Console.WriteLine($"{i}\n");
    }
}
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?