学会排序原理
作者:互联网
排序
冒泡排序
比较相邻的两个元素。如果第一个比第二个大则交换他们的位置(升序排列,降序则反过来)。
从列表的开始一直到结尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。
重复上一步,继续从列表开头依次对相邻元素进行比较。已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。
继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。每轮需要比较的元素个数会递减,一直到只剩一个元素没有“冒泡”时(没有任何一对元素需要比较),则列表排序完成。
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