实现选择排序和冒泡排序以及对数组进行增删改查的思路和代码
2019-07-11 12:52
465 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Azhenjitianxia/article/details/95393295
冒泡排序 数组中增加元素 数组中删除元素 在数组中修改元素 在数组中查询元素
实现选择排序和冒泡排序以及对数组进行增删改查的思路和代码及测试
选择排序
选择排序是一种简单直接的排序算法,时间复杂度是O(n*n),所以它比较适合数据较少的情况,但是它不占用额外的内存空间。
选择排序实现思路
首先从未排序的序列中找到最小(大)元素,放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的最后面。
后面对未排序元素的操作时重复第二步,直到所有元素均排序完毕为止。
因此对n个元素是进行n-1次排序操作。
选择排序实现代码
import java.util.Scanner; public class Choosesort { Scanner input = new Scanner(System.in); //创建一个长度为5的数组,存储输入的5个数据 int[] nums = new int[5]; int temp; //数据获取存储 public void doGetAndSaveData() { for (int i = 0; i < 5; i++) { System.out.println("请输入"+(i+1)+"个数:"); nums[i] = input.nextInt(); } } //对输入的五个数进行选择排序 public void doChoose() { //外循环代表4次排序操作 for (int i = 0; i < 4; i++) { //将i赋给temp1,temp1代表已排序的最小值的数组下标 int temp1 = i; //从数组尾部遍历到i的后一个 for (int j = i+1; j < 5; j++) { //nums[i]后面的每一个与nums[temp1]比较若nums[j]<nums[temp1],就将j赋给temp1,遍历结束得到未排序的最小值所在数组位置的下标 if(nums[j]<nums[temp1]) { temp1 = j; } } //比较i与temp1若不相等则nums[i]与nums[temp1]交换位置,从而得到未排序中的最小值并将它插入已排序序列的尾部 if(i != temp1) { temp = nums[temp1]; nums[temp1] = nums[i]; nums[i] = temp; } } } //数据输出 public void doShuChu() { for(int nums:nums) { System.out.println(nums); } } // 白盒测试 public static void main(String[] args) { Choosesort test = new Choosesort(); test.doGetAndSaveData(); test.doChoose(); test.doShuChu(); } }
选择排序测试
输入7,98,1,0,5会在控制台输出如下结果:
冒泡排序
冒泡排序是一种简单直观的排序算法。它在排序的数列,一次比较两个元素,如果它们的排列顺序有误就交换。直到没有再需要交换的元素为止。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
冒泡排序实现思路
比较排序数列中相邻的两个元素,若后一个比前一个小就交换它们位置,对每个相邻元素做这个操作,第一次遍历完成后最后一个元素为最大数,然后针对其他未排序的元素重复以上的步骤,直到没有元素需要排序为止。
冒泡排序实现代码
import java.util.Scanner; public class MaoPaoSort { //键盘 Scanner in = new Scanner(System.in); //存储数据:内存条中数组是一种链式结构,连续不间断的结构 int[] nums = new int[5]; //数据来源、存储-事情 方法 函数 自定义函数 public void doGetDataAndSaveData() { //输入5个数循环 for(int i=0;i<5;i++) { System.out.println("请输入第"+(i+1)+"个数"); nums[i] = in.nextInt(); } for(int nums:nums) { System.out.println(nums); } } // 算法 public void doCompareData() { // 5个数比较四趟 for (int i = 1; i < 5; i++) { for (int j = 0; j < 5 - i; j++) { //前一个比后一个大就交换位置 if(nums[j]>nums[j+1]) { int temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] =temp; } } } } //白盒测试 public static void main(String[] args) { MaoPaoSort ms = new MaoPaoSort(); ms.doGetDataAndSaveData(); ms.doCompareData(); } }
冒泡排序测试
输入7,98,1,0,5会在控制台输出如下结果:
数组中增加元素
循环遍历数组找到空位置插入元素。
实现数组中增加元素代码
import jdk.internal.org.objectweb.asm.tree.IntInsnNode; import java.util.Scanner; public class AddArray { String[] nums = new String[6]; Scanner in = new Scanner(System.in); //输入 public void doGetDataAndSaveData() { //输入5个数循环 for(int i=0;i<5;i++) { System.out.println("请输入第"+(i+1)+"个数"); nums[i] = in.next(); } } //在数组中插入元素 public void doAddElementToArray() { System.out.println("请输入插入的字符串类型的元素"); String i = in.next(); for (int k = 0; k < nums.length; k++) { if(nums[k]==null) { nums[k] = i; } } System.out.println("数组中的元素为:"); for (int j = 0; j < nums.length; j++) { System.out.println(nums[j]); } } //白盒测试 public static void main(String[] args) { AddArray aa = new AddArray(); aa.doGetDataAndSaveData(); aa.doAddElementToArray(); } }
实现数组中增加元素测试
数组中删除元素
创建两个同类型的数组分别是num1,num2,num1是存储要删除元素值的数组,num2数组元素值刚开始为默认值,长度取决于num1数组中不等于要删除元素值的其他元素总数,将num1数组中除元素值等于要删除元素值的元素都赋值给num2,然后输出num2。
从数组中删除元素代码
import java.util.Scanner; public class DeleteFromArray { int[] nums1 = {1,2,3,4,5,6}; int[] nums2 ; Scanner in = new Scanner(System.in); //删除元素 public void doDeleteFromArray() { //定义num2数组的长度nums int nums = 0; System.out.println("数组中原有元素:"); for(int nums1:nums1) { System.out.println(nums1); } System.out.println("请输入要删除的元素值"); int i = in.nextInt(); for (int j = 0; j < nums1.length; j++) { if(nums1[j]!=i) { nums++; } } nums2 = new int[nums]; int z=0; for (int j = 0; j < nums1.length; j++) { if(nums1[j]!=i) { nums2[z] = nums1[j]; z++; } } System.out.println("数组中现有元素:"); for(int nums2:nums2) { System.out.println(nums2); } } //白盒测试 public static void main(String[] args) { DeleteFromArray dsa = new DeleteFromArray(); dsa.doDeleteFromArray(); } }
从数组中删除元素测试
在数组中修改元素
输入需要修改的数组下标,循环遍历数组找到需要元素,将其修改。
实现在数组中修改元素代码
import java.sql.SQLOutput; import java.util.Scanner; public class ModArray { int[] nums1 = {1,2,3,4,5,6}; Scanner in = new Scanner(System.in); //修改元素 public void doModArray() { System.out.println("数组中原有元素:"); for (int nums1 : nums1) { System.out.println(nums1); } System.out.println("请输入要修改的元素所在的数组下标"); int i = in.nextInt(); System.out.println("请输入要修改元素的元素值"); int k = in.nextInt(); for (int j = 0; j < nums1.length; j++) { if(j==i) { nums1[j] = k; } } System.out.println("数组中现有元素:"); for(int nums1:nums1) { System.out.println(nums1); } } //白盒测试 public static void main(String[] args) { ModArray ma = new ModArray(); ma.doModArray(); } }
在数组中修改元素测试
在数组中查询元素
输入需要查询的数组下标,循环遍历数组找到需要元素,将其输出。
实现在数组中查询元素代码
import java.util.Scanner; public class PrintBySubscript { int[] nums1 = {1,2,3,4,5,6}; Scanner in = new Scanner(System.in); //查询元素 public void doPrintBySubscript() { System.out.println("数组中原有元素:"); for (int nums1 : nums1) { System.out.println(nums1); } System.out.println("请输入要查询的元素所在的数组下标"); int i = in.nextInt(); System.out.println("输出元素值为"); System.out.println(nums1[i]); } //白盒测试 public static void main(String[] args) { PrintBySubscript pb = new PrintBySubscript(); pb.doPrintBySubscript(); } }
在数组中查询元素测试
相关文章推荐
- 用选择的方式对数组进行排序,并写出对应的优化后的代码实现。(重点写思路、原理)
- 浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
- 用冒泡的方式对数组进行排序, 并写出对应的优化后的代码实现。(重点写思路、原理)
- java实现数组的冒泡排序、选择排序代码
- 【Java】数组的冒泡排序和选择排序(原理+代码实现)
- 利用随机类生成数组,并用冒泡排序以及选择排序对不同数组的元素进行从小到大的排序
- js实现的对象数组根据对象的键值进行排序代码
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
- 使用shell排序,插入排序,选择排序,冒泡排序,以及java的Arrays中自带的排序进行对比
- java类实现数组的五种排序 冒泡排序、选择排序、插入排序、希尔排序、数组排序
- JavaScript 冒泡排序和选择排序的实现代码
- python数据结构——选择排序、冒泡排序代码实现详细过程
- 冒泡排序和选择排序二分查找代码实现
- Java中选择,冒泡,快排原理代码 阶层 数组的排序 数组的排序 以及代码大全
- 请通过代码实现以下功能:输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列。
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- java插入排序,冒泡排序,选择排序的思路及实现
- 冒泡排序,选择排序的的代码实现
- C语言数组实现冒泡排序和选择排序程序
- 动态数组实现冒泡排序与选择排序