每天记录学习的新知识:快速排序
发布日期:2021-05-10 05:22:52 浏览次数:16 分类:精选文章

本文共 2934 字,大约阅读时间需要 9 分钟。

���������������C.R.A.Hoare���1962���������������������������������Quick Sort������������������������������������������������������������Divide-and-Conquer Method������

���ortsort������������������������������������������������������������������������������������������������������������������������������������������������O(n��)���

������������������������������������������������������������������������������������������������������������������������������������������������

  • ���������������������������������������������������
  • ������������������������������������������������
  • ������������������������������������������������������������������������������������������������������������������������������������������������������������������

    ������������������������������

    public class MainActivity extends AppCompatActivity {  
    private static final String TAG = "MainActivity";
    int[] ints = {5, 9, 2, 1, 4, 7, 6, 3};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.activity_main_tv_hw).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    quickSort(ints, 0, ints.length - 1);
    for (int n = 0; n < ints.length; n++) {
    Log.i(TAG, "n:" + n);
    Log.i(TAG, "ints[n]:" + ints[n]);
    }
    }
    });
    }
    private void quickSort(int[] ints, int left, int right) {
    if (left >= right) return;
    int i = left;
    int j = right;
    int benchmark = ints[left];
    // ���������while������������������������������
    while (i < j) {
    // ���j������������������������������������������������������
    while (ints[j] >= benchmark) j--;
    if (j > i) { // ������������������������������������������������������
    int temp = ints[i];
    ints[i] = ints[j];
    ints[j] = temp;
    }
    // ���i������������������������������������������������������
    while (ints[i] <= benchmark) i++;
    if (i < j) { // ������������������������������������������������������
    int temp = ints[i];
    ints[i] = ints[j];
    ints[j] = temp;
    }
    // ���������������������������������$i���$j���������������
    ints[i] = benchmark;
    i++; j--;
    }
    // ���������������������������
    quickSort(ints, left, i - 1);
    quickSort(ints, i + 1, right);
    }
    }

    ���������������������������while���������������������������������������������������while���������������������������������������������������������������������������������������������������������������������������������������������

    上一篇:每天记录学习的新知识:PickerView 时间选择器
    下一篇:每天记录学习的新知识:冒泡排序

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年04月01日 03时53分18秒