当前位置:   article > 正文

Day8 1堆 ,栈 2冒泡排序_冒泡排序的堆栈

冒泡排序的堆栈

jvm在运行java应用程序过程中,会把它所管理的内存划分为若干不同的数据区域。

为什么要有堆和栈?这样设计有什么好处?

1. Java自动管理堆和栈,程序员不能直接地设置栈和堆。

2. Java的堆是一个运行时数据区。堆是由JVM的垃圾回收器自动管理的。堆的优势是可以在程序运行时,动态地分配内存大小,但是正是由于这个原因,它的存取速度较慢。

3. 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小和生存期是必须确定的,缺乏灵活性。

4. 栈有一个很重要的特性,就是存在栈中的数据可以共享。

栈:每一个方法被执行的时候,都会在栈区创建一块空间

​        栈的特点:先进后出

​        方法被调用直至执行完毕的过程,对应入栈到出栈的过程

​        栈是由系统自动分配,速度快,栈式一个连续的内存空间

堆:堆用于存储创建好的对象和数组(数组也是对象)

​        堆是一个不连续的内存空间,分配灵活,速度慢

 

 

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. int[] arr = {53,67,34,6,724,8,0};
  4. //1. 写循环
  5. for (int i = 0; i < arr.length/2 ; i++) { //交换的次数 i表示目前是第几轮
  6. //2. 交换 arr[i] arr[6-i]
  7. int c = arr[i];
  8. arr[i] = arr[6-i];
  9. arr[6-i] = c;
  10. }
  11. //验证 遍历 输出fori
  12. for (int i = 0; i <arr.length ; i++) {
  13. System.out.println(arr[i]);
  14. }
  15. //foreach循环遍历iter for(数据类型 变量名 : 数组名)
  16. for(int number : arr){
  17. //循环次数根据arr数组的长度,每次循环把当前数组中的数据赋值给number
  18. System.out.println(number);
  19. }
  20. }
  21. }
  1. public class Demo2 {
  2. public static void main(String[] args) {
  3. int[] arr = {53,67,34,6,724,8,0,60};//length = 8
  4. //循环里:交换
  5. for(int i =0;i< arr.length-1 ;i++){//外循环 经过几轮排序 7轮 完全排好
  6. //每一轮内部又是循环比较 相邻的数 比较7
  7. for (int j = 0; j < arr.length-1-i; j++) {
  8. //从小到大:什么情况才需要交换 前面的数 > 后面的数 才交换位置
  9. //从大到小: 前面的数 < 后面的数
  10. if( arr[j] < arr[j+1]){
  11. // //交换相邻的数 arr[j] arr[j+1]
  12. int temp = arr[j];
  13. arr[j] = arr[j+1];
  14. arr[j+1] = temp;
  15. }
  16. }
  17. }
  18. //验证
  19. for (int i : arr) {
  20. System.out.println(i);
  21. }
  22. }
  23. }
  1. public class Arrays_Demo3 {
  2. public static void main(String[] args) {
  3. int[] arr = {53,67,34,6,724,8,0,60};
  4. //排序sort
  5. Arrays.sort(arr);//sort底层代码实现,一个一个比较,交换
  6. for (int i : arr) {
  7. System.out.println(i);
  8. }
  9. //复制copyOf
  10. String[] arrA = {"张三","李四","王五"};
  11. String[] arrB = new String[3];
  12. //返回值 用一个新数组来接收
  13. arrB = Arrays.copyOf(arrA,2);//第一个参数:原数据,第二个参数:拷贝长度
  14. for (String s : arrB) {
  15. System.out.println(s);
  16. }
  17. //查找binarySearch ---必须先排序
  18. int[] arrC = {53,67,34,6,724,8,0,60};
  19. Arrays.sort(arrC);//查找的前提需要 一组排好序的数据
  20. int weizhi = Arrays.binarySearch(arrC,67);
  21. System.out.println("下标:"+weizhi);
  22. //转换成字符串 toString()
  23. String str = Arrays.toString(arrC);
  24. System.out.println(str);
  25. //填充fill
  26. //Arrays.fill(arrC,0); 全部填充
  27. //填充前3
  28. Arrays.fill(arrC,2,6,9);//含头不含尾
  29. str = Arrays.toString(arrC);
  30. System.out.println(str);
  31. }
  32. }
  1. public class Arrays_Demo4 {
  2. public class Arrays_Demo3 {
  3. public static void main(String[] args) {
  4. int[] arr = {53,67,34,6,724,8,0,60};
  5. //排序sort
  6. Arrays.sort(arr);//sort底层代码实现,一个一个比较,交换
  7. for (int i : arr) {
  8. System.out.println(i);
  9. }
  10. //复制copyOf
  11. String[] arrA = {"张三","李四","王五"};
  12. String[] arrB = new String[3];
  13. //返回值 用一个新数组来接收
  14. arrB = Arrays.copyOf(arrA,2);//第一个参数:原数据,第二个参数:拷贝长度
  15. for (String s : arrB) {
  16. System.out.println(s);
  17. }
  18. //查找binarySearch ---必须先排序
  19. int[] arrC = {53,67,34,6,724,8,0,60};
  20. Arrays.sort(arrC);//查找的前提需要 一组排好序的数据
  21. int weizhi = Arrays.binarySearch(arrC,67);
  22. System.out.println("下标:"+weizhi);
  23. //转换成字符串 toString()
  24. String str = Arrays.toString(arrC);
  25. System.out.println(str);
  26. //填充fill
  27. //Arrays.fill(arrC,0); 全部填充
  28. //填充前3
  29. Arrays.fill(arrC,2,6,9);//含头不含尾
  30. str = Arrays.toString(arrC);
  31. System.out.println(str);
  32. }
  33. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/472529
推荐阅读
相关标签
  

闽ICP备14008679号