算法之排序
时间:2021-07-31
本文章向大家介绍算法之排序,主要包括算法之排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我用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;
}
}
~~
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
原文地址:https://www.cnblogs.com/wkhzwmr/p/15085316.html
- Android 操作Sqlite
- 零基础学编程039:生成群文章目录(2)
- Android中的AutoCompleteTextView的使用
- 深度学习以及卷积基础
- Android 控件:使用下拉列表框--Spinner
- 层层升入:SQL极限调优之一次更新操作的N种优化可能
- 零基础学编程037:小数据分析
- 【干货】圣诞老人是否真实存在?训练Tensorflow的对象检测API能够告诉你答案
- 排序含有数字的字符串:一个巧妙地方法
- wpf 控件大小随窗体大小改变而改变
- 零基础学编程036:快速编写一个GUI程序
- WPF TreeView 选择事件执行两次,获取TreeView的父节点的解决方法
- 零基础学编程041:欧拉公式的几何意义
- 零基础学编程040:在Windows上安装Python库的正确姿势
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 快速配置Azure DevOps代理服务器
- 数据库PostrageSQL-管理内核资源
- airtest操作夜神模拟器adb冲突解决办法
- 数据库PostrageSQL-启动数据库服务器
- 数据库PostrageSQL-PostgreSQL用户账户创建一个数据库集簇
- 轻松上手SpringBoot Security + JWT Hello World示例
- [Go] Golang发送http GET请求
- Windows系统快速安装Superset 0.37
- 商业数据分析从入门到入职(3)Excel进阶应用
- python列表练习
- python元组
- python字典、集合
- 秒懂JVM的三大参数类型,就靠这十个小实验了
- Netty之旅三:Netty服务端启动源码分析,一梭子带走!
- Mysql几种join连接算法