天天看點

排序算法之冒泡排序、選擇排序、插入排序

1、冒泡排序(效率很低)

public static int[] Sort(int[] arr)
        {
            for (int i = 0; i < arr.Length - 1; i++)
            {
                for (int j = 0; j < arr.Length - i - 1; j++)
                {
                    if (arr[j] > arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr;
        }      

2、插入排序(相對于冒泡排序提升了很多時間,插入排序在測試一個數組有很多已經排序好的,速度很快。因為它避免了很多不必要的循環)

public static int[] Sort(int[] arr)
        {
            for (int i = 1; i < arr.Length; i++)
            {
                int a = arr[i];
                int j;
                for (j = i; j > 0; j--)
                {
                    if (a < arr[j - 1])
                    {
                        arr[j] = arr[j - 1];
                    }
                    else
                    {
                        break;
                    }
                }
                arr[j] = a;
            }
            return arr;
        }      
public static int[] Sort(int[] arr)
        {
            for (int i = 0; i < arr.Length - 1; i++)
            {
                //定義一個最小數的索引
                int min = i;
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[j] < arr[min])
                    {
                        min = j;
                    }
                }
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
            return arr;
        }