需要帮助理解选择排序算法

时间:2018-04-24 16:37:27

标签: java arrays sorting

我昨天在课堂上接受了这项任务,并认为我理解了选择排序的过程,但我现在对此感到有点不确定。我认为在每次传球后,左边的数字会被排序,并且不会再次检查,直到右边的所有数字都被排序。

以下是说明和我的回答:

  

在每次选择排序后显示结果数组   算法。如果算法在给定传球之前停止,请离开   传递空白。

Original Array: 30 8 2 25 27 20 
PASS 1: 8 30 2 25 27 20 
PASS 2: 8 2 30 25 27 20 
PASS 3: 8 2 25 30 27 20 
PASS 4: 8 2 25 27 30 20 
PASS 5: 8 2 25 27 20 30

有人可以告诉我,如果我这样做了吗?

5 个答案:

答案 0 :(得分:3)

在伪代码中:

Repeat until no unsorted elements remain:
    Search the unsorted part of the data to find the smallest value
    Swap the smallest found value with the first element of the unsorted part

据此,您的数据列表将是......

Original Array: 30 8 2 25 27 20

P1: [2] 8 30 25 27 20 // smallest(2), swap this with the first value(30)

P2: [2 8] 30 25 27 20 // smallest(8), don't need to swap 

P3: [2 8 20] 25 27 30 // smallest(20), swap this with the first ele of unsorted list(30)

P4: [2 8 20 25] 27 30 // smallest(25), don't need to swap

P5: [2 8 20 25 27] 30 // smallest(27), don't need to swap

P6: [2 8 20 25 27 30] // smallest(30), don't need to swap... sorted!

不需要PASS 6,因为无论如何最后一个元素已经被分类了。

查看来自CS50的视频(哈佛大学详细解释。):https://www.youtube.com/watch?v=3hH8kTHFw2A

答案 1 :(得分:3)

我很高兴你试了一下

算法是:

repeat (numOfElements - 1) times

  set the first unsorted element as the minimum

  for each of the unsorted elements

    if element < currentMinimum

      set element as new minimum

  swap minimum with first unsorted position

输出将是:

Pass 1 : 2 8 30 25 27 20
Pass 2 : 2 8 30 25 27 20
Pass 3 : 2 8 20 25 27 30
Pass 4 : 2 8 20 25 27 30
Pass 5 : 2 8 20 25 27 30

您可以提供自定义输入,它会向您显示逐步输出: https://visualgo.net/bn/sorting

希望这会有所帮助:D

为你的学习干杯!

答案 2 :(得分:2)

我注意到2是数组中最小的元素。所以在第一遍中它应该在数组的开头。请参考以下示例。

示例1: arr [] = 64 25 12 22 11

//找到arr [0 ... 4]中的最小元素 //并将其放在开头 11 25 12 22 64

//找到arr [1 ... 4]中的最小元素 //并将其放在arr [1 ... 4]的开头 11 12 25 22 64

//找到arr [2 ... 4]中的最小元素 //并将其放在arr [2 ... 4]的开头 11 12 22 25 64

//找到arr [3 ... 4]中的最小元素 //并将其放在arr [3 ... 4]的开头 11 12 22 25 64

参考1:https://www.hackerearth.com/practice/algorithms/sorting/selection-sort/tutorial/

参考2:https://www.tutorialspoint.com/data_structures_algorithms/selection_sort_algorithm.htm

答案 3 :(得分:2)

如果你看看你的结果,很明显你没有正确地完成它。八是不少于两个! :)

取第一项:30。找到最小值:2。交换它。

PASS 1: 2 | 8 30 25 27 20 

列表的第一部分现在已经排序(用管道表示)。

采取下一项:8。找到min - 8实际上是min。没有交换。

PASS 2: 2 8 | 30 25 27 20 

采取下一项:30。找到最小值:20。交换它。

PASS 3: 2 8 20 | 25 27 30 

采取下一个项目:25。这是最小值。没有交换。

PASS 4: 2 8 20 25 | 27 30 

采取下一项:27。这是最小值。没有交换。

PASS 5: 2 8 20 25 27 | 30 

采取下一项:30。这是最小值。没有交换。

现在对列表进行了排序。

答案 4 :(得分:0)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<style>
.test {
  display: flex;
  justify-content: space-between;
}
</style>
<!------ Include the above in your HEAD tag ---------->

<div class="container">
  <div class="page-header">
    <h1>Panels with nav tabs.<span class="pull-right label label-default">:)</span></h1>
  </div>
  <div class="row">
    <div class="col-md-6">
      <div class="panel with-nav-tabs panel-default">
        <div class="panel-heading">
          <ul class="nav nav-tabs">
            <li class="active"><a href="#tab1default" data-toggle="tab">Default 1</a></li>
            <li><a href="#tab2default" data-toggle="tab">Default 2</a></li>
            <li><a href="#tab3default" data-toggle="tab">Default 3</a></li>

            <li><a href="#tab4default" data-toggle="tab">Default 4</a></li>
            <li><a href="#tab5default" data-toggle="tab">Default 5</a></li>
          </ul>
        </div>
        <div class="panel-body">
          <div class="tab-content">
            <div class="test">
              <div>
                <img src="https://homepages.cae.wisc.edu/~ece533/images/airplane.png" width="100" height="200">
                <div class="desc">Add a description of the image here</div>
              </div>
              <div>
                <img src="https://homepages.cae.wisc.edu/~ece533/images/arctichare.png" width="100" height="200">
                <div class="desc">Add a description of the image here</div>
              </div>
            </div>
          </div>
        </div>
        <br/>