简单排序和直接插入排序的java实现

最近在看java 的排序算法有几点领悟说下

1.直接插入排序(以数组为例)

所谓直接插入排序就是

算法描述:对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。

以下是java实现:


public class test16 {
    public static void main(String[] args) {
        int arr[]={1,5,2,4,8};
        sort(arr);
        for(int a:arr){

            System.out.print(a);
        }

    }
    public  static  void sort(int arr[]){
        for(int i=1;i<arr.length;i++){
            for(int j=i-1;j>=0;j--){


                if(arr[j]>arr[j+1]){
                    int temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;


                }

            }



        }





    }
}
2.简单选择排序(以数组为例)

(1)从待排序序列中,找到关键字最小的元素;

(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)(2)步,直到排序结束。

以下是java代码:

package sort;
public class SelectSort {
    public static void main(String[] args) {


        int arr[]={8,4,2,4,0};
        sort(arr);
        for(int a:arr){

            System.out.print(a+" ");
        }
    }
    public  static void sort(int arr[]){

        for(int i=0;i<arr.length;i++){
            int index=i;
            for(int j=i+1;j<arr.length;j++){

                if(arr[j]<arr[index]){
                    index=j;

                }
                if(index!=i){//这里表示如果当前位置不是最小值 (或者说有变化)就交换 注意也要定义中间变量 ps:这里困扰了笔者很久,可能笔者不够聪明哈哈


                    int temp=arr[index];
                    arr[index]=arr[i];
                    arr[i]=temp;
                }

            }


        }


    }



}
 
 

由于笔者水平和认知有限 有错误的地方还请指正

 
 







猜你喜欢

转载自blog.csdn.net/kingjiayu/article/details/80033206
今日推荐