选择排序

什么是选择排序

选择排序是一种简单直观的排序算法,它的基本思想是将待排序的数据元素分成已排序区间和未排序区间,每次从未排序区间中选择一个最小(或最大)的元素插入到已排序区间的末尾,直到所有元素都排完为止。其时间复杂度为O(n^2),不适用于大规模数据排序

用python实现选择排序

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i+1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

其中,arr 为待排序的列表。首先,我们用 n 记录列表的长度,然后通过两层循环遍历未排序区间,找到最小的元素,并将其与未排序区间的第一个元素交换位置。最后返回排好序的列表。

示例:

>>> arr = [5, 2, 6, 1, 3]
>>> selection_sort(arr)
[1, 2, 3, 5, 6]

 

用golang实现选择排序

func selectionSort(arr []int) []int {
    n := len(arr)
    for i := 0; i < n; i++ {
        minIndex := i
        for j := i+1; j < n; j++ {
            if arr[j] < arr[minIndex] {
                minIndex = j
            }
        }
        arr[i], arr[minIndex] = arr[minIndex], arr[i]
    }
    return arr
}

其中,arr 为待排序的切片。首先,我们用 n 记录切片的长度,然后通过两层循环遍历未排序区间,找到最小的元素,并将其与未排序区间的第一个元素交换位置。最后返回排好序的切片。

示例:

arr := []int{5, 2, 6, 1, 3}
sortedArr := selectionSort(arr)
fmt.Println(sortedArr) // [1 2 3 5 6]

 

用js实现选择排序

function selectionSort(arr) {
  const len = arr.length;
  let minIndex, temp;

  for(let i = 0; i < len - 1; i++) {
    minIndex = i;
    for(let j = i + 1; j < len; j++) {
      if(arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

// 示例
const arr = [64, 25, 12, 22, 11];
console.log(selectionSort(arr)); // [11, 12, 22, 25, 64]

在这个示例中,我们定义了一个 selectionSort 函数,它接收一个待排序的数组作为参数。函数内部使用了两个嵌套的循环,外层循环用来遍历数组,内层循环用来在未排序的部分中寻找最小的元素,并将其与未排序部分的第一个元素交换位置。最终,函数返回经过排序后的数组

 

用ts实现选择排序

function selectionSort(arr: number[]): number[] {
  const len = arr.length;
  let minIndex, temp;

  for(let i = 0; i < len - 1; i++) {
    minIndex = i;
    for(let j = i + 1; j < len; j++) {
      if(arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

// 示例
const arr: number[] = [64, 25, 12, 22, 11];
console.log(selectionSort(arr)); // [11, 12, 22, 25, 64]

本例中,使用了 TypeScript 中的类型注解,声明了函数参数 arr 的类型为 number[],即表示一个数字类型的数组。在函数内部,使用 let 和 const 关键字声明变量。在循环语句中,使用了 let 声明循环变量,因为循环变量的值会在循环体内修改。在交换两个元素的值时,声明了一个临时变量 temp,使用 const 关键字声明,因为它的值在交换完成后不会再被修改

其他部分与 JavaScript 实现相同。需要注意的是,在 TypeScript 中使用数组的方法和属性时,需要确保数组的类型与方法或属性的类型匹配,否则会导致编译时或运行时出错

 

posted @ 2023-04-05 15:15  SuperCodeX  阅读(46)  评论(0编辑  收藏  举报