C#排序算法

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Algorithm : MonoBehaviour
{
    //排序算法
    public int[] arr = { 0, 5, 7, 6, 9, 4, 3, 2, 8, 1 };
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            BubbleSort();
        } if (Input.GetKeyDown(KeyCode.S))
        {
            SelectionSort();
        } if (Input.GetKeyDown(KeyCode.D))
        {
            InsertionSortFor();
        } if (Input.GetKeyDown(KeyCode.F))
        {
            InsertionSortWhile();
        } if (Input.GetKeyDown(KeyCode.G))
        {
            InsertSortBinary(arr);
        } if (Input.GetKeyDown(KeyCode.H))
        {
            ShellSortHibbard(arr);
        }
    }
    /// <summary>
    /// 三种交换方式
    /// </summary>
    #region 三种交换方式
    // 方法一: 利用临时数tmp
    private void swap(int[] arr, int i, int j)
    {
        /*int tmp = arr[i];
        arr[i] = arr[j+1];
        arr[j+1] = tmp;*/

        int temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
    }
    // 方法二: 利用加减运算
    private void swapCal(int[] arr, int i, int j)
    {
        if (i == j) return; // 若无法保证swapCal被调用时满足 i != j,则需有此句,否则i == j时此数将变为0
        arr[i] = arr[i] + arr[j]; // a = a + b
        arr[j] = arr[i] - arr[j]; // b = a - b
        arr[i] = arr[i] - arr[j]; // a = a - b
    }
    // 方法三: 利用异或运算
    private void swapXOR(int[] arr, int i, int j)
    {
        if (i == j) return; // 若无法保证swapXOR被调用时满足 i != j,则需有此句,否则i == j时此数将变为0
        arr[i] = arr[i] ^ arr[j]; // a = a ^ b,也可写成 arr[i] ^= arr[j];
        arr[j] = arr[i] ^ arr[j]; // b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a, 也可写成 arr[j] ^= arr[i];
        arr[i] = arr[i] ^ arr[j]; // a = (a ^ b) ^ a = (a ^ a) ^ b = 0 ^ b = b, 也可写成 arr[i] ^= arr[j];
    }
    #endregion

    /// <summary>
    /// 算法
    /// 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值