算法之排序
2021/7/31 22:06:06
本文主要是介绍算法之排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我用python实现的冒泡排序是双指针,这里虽然也是双指针,但是flag == 0,可以退出循环我不理解
选择排序python用的是技巧min()函数和切片
java么求初每一次循环索引的最小值(这里的技巧很厉害),然后再覆盖赋值
public class suanfa { public static void main(String[] args) { //直接写main编译器就自动帮你加上了 suanfa bubble = new suanfa(); //把这整个类赋值给sort变量 //java赋值给变量一般数据类型时候都要加数据类型,指定大小空间;除了上方的类等赋值,方法赋值也要 int[] array = {2,5,1,6,4,9,8,5,3,1,2,0}; int[] arr = {2,5,1,6,4,9,8,5,3,1,2,0}; int[] sort = bubble.sort(array);//类调用类中的方法 int[] sort1 = bubble.select(arr);//选择排序 for(int num:sort){ System.out.print(num+"\t"); } System.out.println("_------分割线------—_"); for(int num:sort1){ System.out.print(num+"\t"); } } //冒泡排序 public int[] sort(int[] array){ int temp = 0; // 外层循环,他决定一共走几趟 //-1为了防止溢出 for(int i = 0;i<array.length-1;i++){ int flag = 0; //通过符号位可以减少无谓的比较,如果已经有序了,就退出循环 // 内层循环,他决定每趟走一次 for(int j =0;j<array.length-i-1;j++){ //如果后一个大于前一个,则换位 if(array[j+1]>array[j]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; flag=1; } } //为什么flag == 0,可以退出循环 if(flag==0){ break; } } return array; } //选择排序 public int[] select(int arr[]){ //arr也可以等价于array int temp = 0; for(int i = 0;i<arr.length-1;i++){ //不必python中的range(len(arr)),他不取最后一项, //java这里要标记清楚 // 认为目前的数就是最小的,记录最小数的下标 int minIndix = i; for(int j=i+1;j<arr.length;j++){ if(arr[minIndix]>arr[j]){// 修改最小值的下标 minIndix = j; } } // 当退出for就找到这次的最小值,就需要交换位置了 if(i!=minIndix){ //交换当前值和找到最小值的位置 temp = arr[i]; arr[i] = arr[minIndix]; arr[minIndix] = temp; } } return arr; } } ~~
这篇关于算法之排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南