其他分享
首页 > 其他分享> > 学会排序原理

学会排序原理

作者:互联网

排序

冒泡排序

比较相邻的两个元素。如果第一个比第二个大则交换他们的位置(升序排列,降序则反过来)。
从列表的开始一直到结尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。
重复上一步,继续从列表开头依次对相邻元素进行比较。已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。
继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。每轮需要比较的元素个数会递减,一直到只剩一个元素没有“冒泡”时(没有任何一对元素需要比较),则列表排序完成。
在这里插入图片描述

 int[] numbers=new int[]{9,6,8,2,3,13,4};
        for(int i=0;i<numbers.length-1;i++)
        {
            for(int j=0;j<numbers.length-1-i;j++)
            {
                if(numbers[j]>numbers[j+1])
                {
                    int temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                }
            }
        }
        System.out.println("从小到大排序后的结果是:");
        for(int i=0;i<numbers.length;i++)
            System.out.print(numbers[i]+" ");

插入排序

插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。 按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序 。
在这里插入图片描述

for(int index = 1; index<length; index++){
            int temp = array[index];
            int leftindex = index-1;
            while(leftindex>=0 && array[leftindex]>temp){
                array[leftindex+1] = array[leftindex];
                leftindex--;
            }
            array[leftindex+1] = temp;

选择排序

选择排序是一种简单直观的排序算法。 它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零。

int[] arr= {3,9,-1,10,-2};
		int min=0; 
		int temp=0; 
		int j=0;
		for(int i=0;i<arr.length-1;i++) {
			min=i;  
			j=i;
			for(;j<arr.length;j++) {
				if(arr[min]>arr[j]) {  
					min=j;
				}
			}
			temp=arr[i];
			arr[i]=arr[min];
			arr[min]=temp;
			System.out.printf("第%d次排序的结果是: \n",i+1);
			System.out.println(Arrays.toString(arr));

标签:arr,leftindex,temp,int,学会,元素,原理,排序
来源: https://blog.csdn.net/cjs990204/article/details/120826163