Flask接口签名sign原理与实例代码浅析
228
2022-12-27
Java冒泡排序法和选择排序法的实现
冒泡排序法和选择排序法
本人学生党一枚。java学习过程,写这个博客纯属当复习,有什么错误的地方请大家指出来在评论里指点指点我。谢谢
冒泡排序法
概念:
从前向后(或从后向前)依次比较相邻的元素,若发现逆顺序,则交换。小的向前换,大的向后换,像水底的气泡逐渐向上冒,顾名思义冒泡排序法。
通俗一点就是把大的往上挪!向冒泡一样。
是交换式排序法的一种。冒泡排序法效率较低。
冒泡排序法思路
1:外层循环:控制它要走几次。
假设你有5个数,那就要走4次,最后一次不用走,最后那个数已经在它位置了所以就要length-1次。
2:内层循环:控制逐一比较,如果发现前一个数比后一个数大,则交换。
注意!因为越比较长度就越小了,所以长度要length-1-i。
package com.test_1;
public class Demo5_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr [ ] ={1,6,0,-1,9};
int temp=0;//中间值
//-------冒泡排序法
//外层循环,它决定一共走几趟
for(int i = 0;i //内层循环,开始逐个比较 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //输出结果 for(int i = 0;i System.out.print(arr[i]); } } } 选择排序法 概念: 第一次从R[0]~R[n-1]中选取最小值,与R[0]交换。第二次从R[1]~R[n-1]中选取最小值与R[1]交换。。。以此类推。 通俗点说就是每次找到后面元素的最小值然后与之交换。 选择排序法效率中。 选择排序思路 1:外层循环:要走几http://趟,同样是length-1。 2:设置一个最小值。假设第一个就是最小值。 3:设置一个最小值下标 4:内层循环:那你当前的最小值去逐一比较。当有比当前最小值小的数时,记录最小值,记录下标。 5:退出内层循环后就交换位置。 package com.test_1; public class Demo5_3 { public static void main(String[] args) { //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //调用选择排序法 Select select = new Select(); select.sort(arr); } } //--------------选择排序法 class Select{ public void sort(int arr[]){ //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较 for(int k=j+1;k //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } //输出结果 for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
//内层循环,开始逐个比较
//如果我们发现前一个数比后一个数大,则交换
for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //输出结果 for(int i = 0;i System.out.print(arr[i]); } } } 选择排序法 概念: 第一次从R[0]~R[n-1]中选取最小值,与R[0]交换。第二次从R[1]~R[n-1]中选取最小值与R[1]交换。。。以此类推。 通俗点说就是每次找到后面元素的最小值然后与之交换。 选择排序法效率中。 选择排序思路 1:外层循环:要走几http://趟,同样是length-1。 2:设置一个最小值。假设第一个就是最小值。 3:设置一个最小值下标 4:内层循环:那你当前的最小值去逐一比较。当有比当前最小值小的数时,记录最小值,记录下标。 5:退出内层循环后就交换位置。 package com.test_1; public class Demo5_3 { public static void main(String[] args) { //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //调用选择排序法 Select select = new Select(); select.sort(arr); } } //--------------选择排序法 class Select{ public void sort(int arr[]){ //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较 for(int k=j+1;k //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } //输出结果 for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
if (arr[j]>arr[j+1]) {
//换位
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//输出结果
for(int i = 0;i System.out.print(arr[i]); } } } 选择排序法 概念: 第一次从R[0]~R[n-1]中选取最小值,与R[0]交换。第二次从R[1]~R[n-1]中选取最小值与R[1]交换。。。以此类推。 通俗点说就是每次找到后面元素的最小值然后与之交换。 选择排序法效率中。 选择排序思路 1:外层循环:要走几http://趟,同样是length-1。 2:设置一个最小值。假设第一个就是最小值。 3:设置一个最小值下标 4:内层循环:那你当前的最小值去逐一比较。当有比当前最小值小的数时,记录最小值,记录下标。 5:退出内层循环后就交换位置。 package com.test_1; public class Demo5_3 { public static void main(String[] args) { //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //调用选择排序法 Select select = new Select(); select.sort(arr); } } //--------------选择排序法 class Select{ public void sort(int arr[]){ //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较 for(int k=j+1;k //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } //输出结果 for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
System.out.print(arr[i]);
}
}
}
选择排序法
概念:
第一次从R[0]~R[n-1]中选取最小值,与R[0]交换。第二次从R[1]~R[n-1]中选取最小值与R[1]交换。。。以此类推。
通俗点说就是每次找到后面元素的最小值然后与之交换。
选择排序法效率中。
选择排序思路
1:外层循环:要走几http://趟,同样是length-1。
2:设置一个最小值。假设第一个就是最小值。
3:设置一个最小值下标
4:内层循环:那你当前的最小值去逐一比较。当有比当前最小值小的数时,记录最小值,记录下标。
5:退出内层循环后就交换位置。
package com.test_1;
public class Demo5_3 {
public static void main(String[] args) {
//简单测试数组
int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687};
//调用选择排序法
Select select = new Select();
select.sort(arr);
}
}
//--------------选择排序法
class Select{
public void sort(int arr[]){
//中间值
int temp = 0;
//外循环:我认为最小的数,从0~长度-1
for(int j = 0; j //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较 for(int k=j+1;k //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } //输出结果 for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
//最小值:假设第一个数就是最小的
int min = arr[j];
//记录最小数的下标的
int minIndex=j;
//内循环:拿我认为的最小的数和后面的数一个个进行比较
for(int k=j+1;k //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } //输出结果 for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
//找到最小值
if (min>arr[k]) {
//修改最小
min=arr[k];
minIndex=k;
}
}
//当退出内层循环就找到这次的最小值
//交换位置
temp = arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
//输出结果
for(int i = 0;i System.out.print(arr[i]+" "); } } } 最后再比较一下两个排序法之间的效率差异: 代码 package com.test_1; import java.util.Calendar; public class Demo5_3 { public static void main(String[] args) { //构建一个庞大的无序数组用于测试时间 int len=100000; int arr1 [] = new int [len]; for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
System.out.print(arr[i]+" ");
}
}
}
最后再比较一下两个排序法之间的效率差异:
代码
package com.test_1;
import java.util.Calendar;
public class Demo5_3 {
public static void main(String[] args) {
//构建一个庞大的无序数组用于测试时间
int len=100000;
int arr1 [] = new int [len];
for(int i=0;i //让程序随机产生一个1~10000的数 //Math.random()会产生一个0~1的数 int t = (int)(Math.random()*10000); arr1[i] = t; } //简单测试数组 int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687}; //获得时间实例 Calendar cal = Calendar.getInstance(); //在排序前打印系统时间 System.out.println("冒泡排序法开始"+cal.getTime()); //调用冒泡排序法 Bubble bubble = new Bubble(); bubble.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("冒泡排序法结束"+cal.getTime()); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法开始"+cal.getTime()); //调用选择排序法 Select select = new Select(); select.sort(arr1); //重新获得时间实例 cal = Calendar.getInstance(); System.out.println("选择排序法结束"+cal.getTime()); } } //-----------------冒泡排序法 class Bubble{ //排序方法 public void sort(int arr[]){ int temp=0;//中间值 //-------冒泡排序法 //外层循环,它决定一共走几趟 for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
//让程序随机产生一个1~10000的数
//Math.random()会产生一个0~1的数
int t = (int)(Math.random()*10000);
arr1[i] = t;
}
//简单测试数组
int arr [ ] ={1,6,0,-1,9,1000,-1000,98,-687};
//获得时间实例
Calendar cal = Calendar.getInstance();
//在排序前打印系统时间
System.out.println("冒泡排序法开始"+cal.getTime());
//调用冒泡排序法
Bubble bubble = new Bubble();
bubble.sort(arr1);
//重新获得时间实例
cal = Calendar.getInstance();
System.out.println("冒泡排序法结束"+cal.getTime());
//重新获得时间实例
cal = Calendar.getInstance();
System.out.println("选择排序法开始"+cal.getTime());
//调用选择排序法
Select select = new Select();
select.sort(arr1);
//重新获得时间实例
cal = Calendar.getInstance();
System.out.println("选择排序法结束"+cal.getTime());
}
}
//-----------------冒泡排序法
class Bubble{
//排序方法
public void sort(int arr[]){
int temp=0;//中间值
//-------冒泡排序法
//外层循环,它决定一共走几趟
for(int i = 0;i //内层循环,决定每一趟循环的次数 //如果我们发现前一个数比后一个数大,则交换 for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
//内层循环,决定每一趟循环的次数
//如果我们发现前一个数比后一个数大,则交换
for(int j=0;j if (arr[j]>arr[j+1]) { //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
if (arr[j]>arr[j+1]) {
//换位
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
/*//输出结果
for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } //--------------选择排序法 class Select { public void sort(int arr[]) { //中间值 int temp = 0; //外循环:我认为最小的数,从0~长度-1 for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
System.out.print(arr[i]+" ");
}*/
}
}
//--------------选择排序法
class Select
{
public void sort(int arr[])
{
//中间值
int temp = 0;
//外循环:我认为最小的数,从0~长度-1
for(int j = 0; j { //最小值:假设第一个数就是最小的 int min = arr[j]; //记录最小数的下标的 int minIndex=j; //内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标 for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
{
//最小值:假设第一个数就是最小的
int min = arr[j];
//记录最小数的下标的
int minIndex=j;
//内循环:拿我认为的最小的数和后面的数一个个进行比较找到下标
for(int k=j+1;k { //找到最小值 if (min>arr[k]) { //修改最小 min=arr[k]; minIndex=k; } } //当退出内层循环就找到这次的最小值 //交换位置 temp = arr[j]; arr[j]=arr[minIndex]; arr[minIndex]=temp; } /*//输出结果 for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
{
//找到最小值
if (min>arr[k])
{
//修改最小
min=arr[k];
minIndex=k;
}
}
//当退出内层循环就找到这次的最小值
//交换位置
temp = arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
/*//输出结果
for(int i = 0;i System.out.print(arr[i]+" "); }*/ } } 运行结果:
System.out.print(arr[i]+" ");
}*/
}
}
运行结果:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~