冒泡排序与普通排序的测试

 

package Retror_First;
//利用两种方法进行排序,并指出哪种是冒泡排序
public class maopao {
 public static void main(String[] args) {
  System.out.println("普通排序开始执行:");
  int arrs[]={9,8,5,12,4};
  for(int i=0;i<arrs.length;i++){
   for(int j=i;j<arrs.length-1;j++){
    int temp=0;
    if(arrs[i]>arrs[j+1]){
     temp=arrs[i];
     arrs[i]=arrs[j+1];
     arrs[j+1]=temp;
    }
   }
   for(int k=0;k<arrs.length;k++){
    System.out.print(arrs[k]+" ");
   }
   System.out.println();
  }
  
  /**for 循环内,循环步骤为
   * 4 9 8 12 5 
      4 5 9 12 8 

      4 5 8 12 9 
      4 5 8 9 12 
      4 5 8 9 12
      因为比较的顺序每次都是从第一个以此往后比较,而不是相邻的两个进行的比较,所以不符合冒泡排序
   */
  System.out.println("排序完成后输出:");
  for(int i=0;i<arrs.length;i++){
   System.out.print(arrs[i]+" ");
  }
  
  System.out.println();
  
  //真正的冒泡排序
  System.out.println("冒泡排序开始执行:");
  int arrs1[]={9,8,5,12,4};
  for(int i=0;i<arrs1.length;i++){
   for(int j=0;j<arrs1.length-1;j++){
    int temp=0;
    if(arrs1[j]>arrs1[j+1]){
     temp=arrs1[j];
     arrs1[j]=arrs1[j+1];
     arrs1[j+1]=temp;
    }
    /**
     * for 循环里循环的步骤为:
     * 8 5 9 4 12 
        5 8 4 9 12 
        5 4 8 9 12 
        4 5 8 9 12 
        4 5 8 9 12
     */
   }
   for(int k=0;k<arrs1.length;k++){
    System.out.print(arrs1[k]+" ");
   }
   System.out.println();
  }
 }
}

### 回答1: 1. 排序算法课程设计题目:实现快速排序和归并排序,并比较它们在不同数据规模下的运行时间,分析其优缺点和适用场景。 2. 动态规划算法课程设计题目:给定一个背包容量和一组物品,每个物品有一个重量和一个价,设计一个动态规划算法,使得在限制总重量的情况下,能够获得最大价的物品组合。并分析算法的时间复杂度和空间复杂度。 3. 综合题目:给定一个数组,其中每个元素表示在该位置可以跳跃的最大步数,设计一个算法来确定是否可以到达数组的最后一个位置。如果可以,返回 true ;否则,返回 false 。并分析算法的时间复杂度和空间复杂度。 ### 回答2: 课程设计题目:设计一个算法,要求对给定的一组数字进行排序,并使用动态规划算法进行优化。 算法步骤: 1. 输入一组无序数字列表,例如:[5, 2, 8, 10, 3] 2. 使用排序算法对列表进行排序,例如选择排序冒泡排序、快速排序等。 3. 使用动态规划算法对排序算法进行优化,以提高其效率。 a. 定义状态定义:dp[i]表示在第i个位置时的最少操作次数。 b. 初始化状态:dp[0] = 0。 c. 状态转移方程:dp[i] = min(dp[i-1] + 1, dp[i]),其中dp[i]表示将第i个数移到正确的位置时的最少操作次数,dp[i-1] + 1表示将第i个数字移到前一个位置的最少操作次数,dp[i]表示将第i个数字移动到正确位置时的最少操作次数。 4. 根据优化后的动态规划算法对排序算法进行改写。 5. 输出优化后的排序结果。 例如,对于输入的一组无序数字列表[5, 2, 8, 10, 3],使用选择排序算法进行排序: 1. 第一次迭代,找到最小的数字2,与第一个位置的数字5交换,列表变为[2, 5, 8, 10, 3],此时操作次数为1。 2. 第二次迭代,找到第二小的数字3,与第二个位置的数字5交换,列表变为[2, 3, 8, 10, 5],此时操作次数为2。 3. 迭代所得的排序结果为[2, 3, 5, 8, 10],操作次数为2。 通过使用动态规划算法对排序算法进行优化,可以明显减少排序所需的操作次数,提高排序效率。 ### 回答3: 课程设计题目:实现归并排序算法和背包问题的动态规划算法。 归并排序算法是一种经典的排序算法,通过将待排序序列不断地拆分为更小的子序列,然后将这些子序列合并成一个有序序列来完成排序过程。实现归并排序算法,可以通过递归地将序列分割为两半,直到每个子序列只有一个元素,然后再将这些子序列两两合并,直到最终得到完全有序的序列。 背包问题是一个经典的动态规划问题,其目标是在给定总重量限制下,选择一些物品使得总价最大。解决背包问题的动态规划算法主要包括两个步骤:状态定义和状态转移方程。状态定义是指定义一个二维数组dp,其中dp[i][j]代表使用前i个物品,在总重量限制为j的情况下所能获得的最大价。状态转移方程是根据具体问题的限制条件,不断更新dp数组,直到找到最优解。 在这个课程设计题目中,我们将实现以上两种算法。首先,实现归并排序算法,分析其时间复杂度和空间复杂度,并测试其对不同规模的输入数据的排序性能。然后,实现背包问题的动态规划算法,设计多组测试数据进行验证,并比较不同算法的时间复杂度和空间复杂度。通过这个课程设计题目,可以加深对排序算法和动态规划算法的理解和运用,并掌握实现这两种算法的本思路和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值