void selectionSort(int *arr, int length)如何进行插入排序
时间: 2023-08-28 09:31:29 浏览: 40
这段代码是选择排序的实现,如果要进行插入排序,需要进行如下改动:
```
void insertionSort(int *arr, int length){
int temp,j;
for(int i=1;i<length;i++){
temp=arr[i];
j=i-1;
while(j>=0 && arr[j]>temp){ // 找到插入位置
arr[j+1]=arr[j];
j--;
}
arr[j+1]=temp;
}
// return 0; 插入排序不需要返回值
}
```
插入排序的思想:将未排序的元素插入到已排序的合适位置。时间复杂度为 O(n^2)。
相关问题
void bubbleSort(int *arr, int length){ int min,temp; for(int i=0;i<length-1;i++){ min=i; for(int j=i+1;j<length;j++){ if(arr[j],arr[min]){ min=j; } } temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; } return 0; }如何进行选择排序
这段代码是冒泡排序的实现,如果要进行选择排序,需要进行如下改动:
```
void selectionSort(int *arr, int length){
int min,temp;
for(int i=0;i<length-1;i++){
min=i;
for(int j=i+1;j<length;j++){
if(arr[j]<arr[min]){ // 选择排序的关键:找到最小值的下标
min=j;
}
}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
// return 0; 选择排序不需要返回值
}
```
选择排序的思想:每次从未排序的部分中找到最小值,放到已排序的末尾。时间复杂度为 O(n^2)。
详细解释下这段代码:public class SelectorSort { public static void selectionSort(int[] arr){ if(arr == null || arr.length < 2){ return ; } for (int i = 0; i < arr.length; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { minIndex = arr[j] < arr[minIndex] ? j: minIndex;//i ~ N-1 找出最小值的下标 } swap(arr,i,minIndex); } } public static void swap(int[] arr,int i ,int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } public static void main(String[] args) { int[] arr = {1,5,3,9,2,4,1,7}; selectionSort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
这段代码实现了选择排序算法。
选择排序是一种简单的排序算法,它的基本思想是:每次从待排序的数据元素中选择最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
这段代码中,首先判断传入的数组是否为空或长度小于2,如果是则直接返回,否则进行排序。排序过程中,外层循环控制排序次数,内层循环在待排序元素中找出最小元素的下标,并将其与当前位置的元素交换。swap方法用于交换数组中的两个元素。
最后在main方法中,定义了一个int数组,调用selectionSort方法进行排序,然后将排好序的数组输出。