1、选择排序
思想:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5
public class T1130 {
public static void main(String[] args) {
int[] arr={
1,4,3,6,7,8,5};
quickInsertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int[] arr){
for (int i = 0; i <arr.length -1; i++) {
int min=i;
for (int j = i+1; j <arr.length ; j++) {
if(arr[j]<arr[min])
{
min=j;
}
}
if(min!=i)
{
int temp = arr[i];
arr[i]=arr[min];
arr[min]= temp;
}
}
System.out.println( Arrays.toString(arr));
}
}
2、插入排序
思想:
- 从待排序序列中,找到关键字最小的元素;
- 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
- 从余下的 N - 1 个元素中,找出关键字最小的元素,重复①、②步,直到排序结束。
仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
arr 待排序数组
public static void quickInsertSort(int[] arr) {
for (int i = 1; i <arr.length ; i++) {
int temp =arr[i];
for (int j = i; j >=0 ; j--) {
if(j>0&&arr[j-1]>temp)
{
arr[j]=arr[j-1];
}else {
arr[j]=temp;
break;
}
}
}