1.冒泡排序
这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于比较相邻的元素,如果它们的顺序不正确,则交换它们的位置。在每次内部循环之后,最大的元素都会被移到数组的末尾,因此可以通过将外部循环的次数减1来避免比较已经排序好的元素。最后,函数返回已经排序好的数组。
2.选择排序
这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于在未排序的部分中找到最小的元素。在第二个循环中,我们将当前元素的索引存储在minIndex
变量中,如果找到了更小的元素,则更新minIndex
变量。在内部循环之后,我们交换当前元素和未排序部分中的最小元素。最后,函数返回已经排序好的数组。
3.插入排序
这个函数使用了双重循环,第一个循环用于遍历数组中的每个元素,第二个循环用于将当前元素插入已排序的部分中。在内部循环中,我们将当前元素保存在key
变量中,并将j
初始化为i-1
,表示已排序部分的最后一个元素的索引。然后我们在已排序的部分中逆序遍历,将每个大于key
的元素右移一个位置。在完成内部循环后,我们将key
插入到正确的位置。最后,函数返回已经排序好的数组。
4.归并排序
这个函数使用了递归方法,首先检查数组的长度是否为1或更小。如果是这样,它返回该数组。否则,它将数组拆分成左右两个子数组,每个子数组递归调用mergeSort
函数。最后,它调用merge
函数,将两个子数组合并成一个已排序的数组。merge
函数使用两个指针遍历两个已排序的数组,并将它们的元素比较,然后将最小的元素推到结果数组中。最后,将任何剩余的元素添加到结果数组的末尾。
5.快速排序
这个函数使用了递归方法,首先检查左右指针是否重合。如果左指针小于右指针,则使用partition
函数将数组分为两部分,其中左侧部分小于或等于右侧部分。然后,递归地对左右两部分进行快速排序。partition
函数使用最右侧元素作为主元素,将其移动到正确的位置,并将其分隔成两部分。它使用i
变量跟踪左侧小于或等于主元素的最后一个元素。在遍历过程中,如果当前元素小于或等于主元素,则将其与i
处元素交换,同时将i
增加1。最后,将主元素移动到i+1
处,这是左右两部分的分界点。