——- android培训、java培训、期待与您交流! ———-
/*
需求:将一组数组中的数从小到大排序
一、选择排序法思路:
1.用数组中第一个元素和之后的每个元素相比较,如果第一个元素大,则交换
两个数的位置,这样最小的元素便排到第一位。依次用第二个元素,第三个元
素……倒数第二个元素与排在其后面的元素比较,如果前面的数值大交换两个
数对应的下标。
2.当数组中所有元素两两比较完后,这个数组便按照从小到大的顺序排好了
步骤:
1.使用嵌套循环对数组遍历,外循环控制数组任意两元素中前面的元素的下标,
内循环控制后面元素的下标。
2.在内循环循环变量的初始值与外循环的循环变量值的变化相同,且内循环变量
的最大值为数组元素个数碱一,计算数组元素个数使用函数“数组名.length”,(计算
字符串的长度用“数组名.length()”)。
3.在内循环体中,定义一个条件,如果前面的元素数值大于后面元素的数值,交换
两个元素下标。
*/
public static void selectSort(int[] arr)
{
//外循环控制前面的元素
for(int x = 0; x < arr.length ;x++ )
{
//内循环控制后面的元素
for(int y = x; y < arr.length-1 ; y++ )
{
//前面的元素数值大于后面元素,交换两个元素下标
if(arr[y] < arr[x])
{
int temp;
temp = arr[y];
arr[y] = arr[x];
arr[x] = temp;
}
}
}
}
二、冒泡排序法思路:
1.依次比较数组中相邻两元素的大小,如果前面元素比后面元素大,交换它们
的下标。经过一轮的多次比较后,数值最大的一个元素便排在最后。
2.这样每经过一轮比较需要比较的元素便少一个,一直到剩下一个元素。此时,
该数组便按照从小到大的顺序排好了。
步骤:
1.使用嵌套循环,外循环控制循环的轮数,内循环控制数组中需要比较的元素的下标。
2.外循环变量的初始值从1开始,总共需要arr.length-1轮循环。内循环变量每次都从0 开
始,内循环的最大值是元素总数减去循环的轮数(外循环变量)
3.内循环体中,定义一个条件,如果前面的数值大于后面的,则交换两个数的下标。
public static void bubbleSort(int[] arr)
{
//外循环控制循环的轮数
for(int x = 1; x < arr.length; x++)
{
//内循环控制比较元素的下标
for(int y = 0; y < arr.length-x ;y++)
{
if(arr[y] > arr[y+1])
{
int temp;
temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
三、插入排序法思路:
1.从第二个元素开始依次取出数组中后面的元素。
2.每取出一个元素就不断循环地与排好序的数据比较,将其放在合适的位置。直到把
最后一个数据插入到合适位置。
步骤:
1.从第二个元素开始依次取出数组中的元素,因为取出的数不断变化,将其赋给变量
2.使用while语句循环地比较取出的数剧与排好序的数据,如果取出的数比排在其前面的
数小,将排在其前面的数后移一位,直到该取出数被排到第一位,或者比排在其前面的
数大为止。
3.最后将储存在变量中的数放在找到的位置上。
public static void insertSort(int[] arr)
{
for(int i = 1; i < arr.length; i++)
{
int m = arr[i]; //变量m中存放取出的数据
int j = i-1; //变量j表示取出的数据(下标为i)的前一位
while(j >= 0 && arr[j] > m)
{
arr[j+1] = arr[j]; //将排在取出数据前面数据的后移一位
j--; //不断减小前一位的下标
}
arr[j+1] = m; //跳出while循环的j多碱了一次
}
四、验证
class PaiXu
{
//主函数
public static void main(String[] args)
{
int[] col = {5,52,23,2,8,95,52,30};
daYin(col); //打印原始数组
System.out.println("------------------------------------------------");
selectSort(col); //使用选择排序法按从小到大排序
// bubbleSort(col); //使用冒泡排序法按从小到大排序
// insertSort(col); //插入排序法按从小到大排序
daYin(col) ;
}
}
选择排序、冒泡排序和插入排序的结果如下: