用Java编写算法

这次我将写一下使用Java进行排序算法的内容。

我会将其作为备忘录留下。

首先是冒泡排序。

这是一个在中文中频繁使用的算法,通过比较大小并交换顺序来进行排序。

    static void bubble_Sort(int []data)
    {
        for(int s = data.length - 1; s > 0; --s)
        {
            for(int t = 0; t < s; ++t)
            {
                if(data[t] > data[t + 1])
                {
                    int temp = data[t];
                    data[t] = data[t + 1];
                    data[t + 1] = temp;
                }
            }
        }
    }

接下来是快速排序。
它是一种算法,将数据集根据基准值分为大于和小于基准值的两部分,并利用新的基准值对分组进行递归重复相同的操作。

在排序算法中,它是最快结束的。

    static void quick_Sort(int []data, int left, int right){

        if (left >= right) {
            return;
        }

        int p = data[(left + right)/2];
        int l = left;
        int r = right;
        int temp;

        while(l <= r) {

            while(data[l] < p) { ++l; }
            while(data[r] > p) { --r; }

            if (l <= r) {
                temp = data[l];
                data[l] = data[r];
                data[r] = temp;
                ++l;
                --r;
            }
        }

        quick_Sort(data, left, r);  // ピボットより左側をクイックソート
        quick_Sort(data, l, right); // ピボットより右側をクイックソート

    }

顺便提一下,冒泡排序大约需要15秒左右,而快速排序大约只需要0.2秒左右。

快速排序太快了…

[补记]
经评论提醒,我已做出修改。

确认修正后,使用冒泡排序的时间为40秒。

这样,冒泡排序和快速排序都可以正常工作。

不好意思给您带来了麻烦

广告
将在 10 秒后关闭
bannerAds