数据结构与算法——编程实践

数据结构与算法课程团队,全力打造


7. 排序(3题)

<ol> <li> <p>插入排序</p> <pre><code class="language-c">void insertSort(int arr[], int n) { int i, key, j; for (i = 1; i &amp;lt; n; i++) { key = arr[i]; j = i - 1; // 将arr[i]插入到已排序序列中正确的位置 while (j &amp;gt;= 0 &amp;amp;&amp;amp; arr[j] &amp;gt; key) { arr[j + 1] = arr[j]; j = j - 1; } arr[j + 1] = key; } }</code></pre> <pre><code class="language-python">def insertSortAbs(a, n): # 补充代码 for i in range(1, n): temp = a[i] j = i-1 while(j&amp;gt;=0 and a[j]&amp;gt;temp): a[j+1] = a[j] j-=1 a[j+1] = temp</code></pre> </li> <li>冒泡排序 <pre><code class="language-c">void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i &amp;lt; n-1; i++) { // 最后i个元素已经是有序的 for (j = 0; j &amp;lt; n-i-1; j++) { if (arr[j] &amp;gt; arr[j+1]) { // 交换arr[j]和arr[j+1] int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }</code></pre> <pre><code class="language-python">def bubble_sort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): swapped = False # 最后i个元素已经是有序的 for j in range(0, n-i-1): # 如果当前元素大于下一个元素,则交换它们 if arr[j] &amp;gt; arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] swapped = True # 如果没有发生交换,说明列表已经排序好了 if not swapped: break return arr</code></pre></li> <li> <p>简单选择排序</p> <pre><code class="language-c">void selectionSort(int arr[], int n) { int i, j, min_idx; // 遍历所有元素 for (i = 0; i &amp;lt; n-1; i++) { // 假设当前索引的元素是最小的 min_idx = i; // 在剩余未排序元素中寻找最小元素的索引 for (j = i+1; j &amp;lt; n; j++) if (arr[j] &amp;lt; arr[min_idx]) min_idx = j; // 交换找到的最小元素与第一个元素 int temp = arr[min_idx]; arr[min_idx] = arr[i]; arr[i] = temp; } }</code></pre> <pre><code class="language-python">def selection_sort(arr): for i in range(len(arr)): # 假设当前索引的元素是最小的 min_index = i # 在剩余未排序元素中寻找最小元素的索引 for j in range(i+1, len(arr)): if arr[j] &amp;lt; arr[min_index]: min_index = j # 交换找到的最小元素与第一个元素 arr[i], arr[min_index] = arr[min_index], arr[i] return arr</code></pre> </li> </ol>

页面列表

ITEM_HTML