算法总结

来源:互联网 发布:索马里海盗抢军舰知乎 编辑:程序博客网 时间:2024/06/05 22:52

1.快速排序

 快速排序时间复杂度为O(nlogn) ,空见复杂度为O(logn)~O(n) 

public int[] QuickSort(int[] arr,int length,int index)

        {

             int start;

            start = arr[index];

            int i = length - 1;

            int j = index;

            while (j < i)

            {

                while (start < arr[i])

                {

                    i--;

                }

                if (j < i)

                {

                    arr[j] = arr[i];

                    j++;

                }

                while (arr[j] < start)

                {

                    j++;

                }

                if (j < i)

                {

                    arr[i] = arr[j];

                    i--;

                }

            }

            arr[i] = start;

            QuickSort(arr, i,0);

            QuickSort(arr, length , i);

            return arr;

        }

}

 

2冒泡排序

时间复杂度:O(n2)   空间复杂度:O(1) ;是稳定的排序方式、

public static int[] BubbleSort(int[] arr, int length)

        {

            int n=1;

 

            for (; n < length; n++)

            {

                int r = 0;

                int start = 0,m = 1;

              for (; m < length; m++)

              {

                if ((r < length -1)&&(arr[r]>=arr[r+1]))

                {

                   start =  arr[r];

                   arr[r] = arr[r + 1];

                   arr[r + 1] = start;

                   Console.WriteLine("{0},{1},{2}", arr[r], arr[r + 1],r);

                    r++;

                }

             }

            }

              return arr;

      }

3. 选择排序

 平均时间复杂度:O(n2),空间复杂度 O(1) ,属于稳定性排序;

         public int[] SelectSort(int[] arr, int length)
        {
            int n=1;
            int index = 0;
            int start;
           
            for (; n < length; n++, index++)
            {
                start = arr[index];
                int a = index;
                for (int i = index; i < length-1;i++ )
                {           
                    if((start > arr[i + 1]) && (i < length))
                    {
                        start = arr[i + 1];
                        a = i + 1;
                    }
                }
                arr[a] = arr[index];
                arr[index] = start;
            }
            return arr;
        }

0 0
原创粉丝点击