public void sortByYprice() { for (int i = 0; i < drugList.size() - 1; i++) { for (int j = 0; j < drugList.size() - i - 1; j++) { if (drugList.get(j).getYprice() > drugList.get(j + 1).getYprice()) { Collections.swap(drugList, j, j + 1); }解释代码
时间: 2024-04-03 20:37:09 浏览: 61
这段代码是一个对药品列表进行按照价格从低到高排序的方法。它使用了冒泡排序的算法来实现。具体来说,它通过两个嵌套的循环遍历了药品列表中的每一个元素,然后比较每相邻两个元素的价格大小,如果前一个元素的价格大于后一个元素的价格,就交换它们的位置,以此来达到排序的目的。其中,`Collections.swap()` 方法是用来交换两个元素的位置的。
相关问题
解释代码public void sortByYamount(List<Drug> drugList, int low, int high) { if (low < high) { int i = low, j = high; Drug pivot = drugList.get(low); while (i < j) { while (i < j && drugList.get(j).getYamount() <= pivot.getYamount()) { j--; } if (i < j) { drugList.set(i++, drugList.get(j)); } while (i < j && drugList.get(i).getYamount() >= pivot.getYamount()) { i++; } if (i < j) { drugList.set(j--, drugList.get(i)); } } drugList.set(i, pivot); sortByYamount(drugList, low, i - 1); sortByYamount(drugList, i + 1, high); }}
这是一个使用快速排序算法对药品列表按照药品的Yamount属性进行排序的方法。该方法的参数包括一个药品列表,以及需要排序的起始位置low和结束位置high。在方法内部,首先进行了判断,如果起始位置小于结束位置,则进行排序操作。选择起始位置的药品作为枢轴元素,然后使用双指针的方式进行排序。具体来说,指针i指向起始位置,指针j指向结束位置,通过交换i和j位置上的元素,来达到排序的目的。在排序过程中,如果i<j,则先将j指针向左遍历,直到找到一个药品的Yamount属性小于枢轴元素的Yamount属性,然后将该药品与i位置的药品进行交换。接着,i指针向右遍历,直到找到一个药品的Yamount属性大于枢轴元素的Yamount属性,然后将该药品与j位置的药品进行交换。最后,将枢轴元素放到i位置上,然后递归调用排序函数,分别对左边和右边的子列表进行排序,直到排序完成。
解释代码public static void main(String[] args) { DrugStoreSystem dss = new DrugStoreSystem(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("--------------------药店药品销售统计系统--------------------\t"); System.out.println("请选择你要执行的操作:\t"); System.out.println("1.显示所有药品记录\t"); System.out.println("2.对单价的排序采用冒泡排序法\t"); System.out.println("3.对销售量的排序采用快速排序法\t"); System.out.println("4.对销售额的排序采用堆排序法\t"); System.out.println("5.按药品编号进行排序\t"); System.out.println("0.退出程序"); int choice = scanner.nextInt(); switch (choice) { case 1: System.out.println("姓名:杨风梅\t学号:2105020241"); dss.loadData("D:\\test01\\src\\test01\\medicine.txt"); dss.printList(drugList); break; case 2: System.out.println("姓名:杨风梅\t学号:2105020241"); dss.sortByYprice(); dss.printList(drugList); break; case 3: System.out.println("姓名:杨风梅\t学号:2105020241"); dss.sortByYamount(drugList, 0, drugList.size() - 1); dss.printList(drugList); break; case 4: System.out.println("姓名:杨风梅\t学号:2105020241"); dss.sortByYsalesprice(drugList); dss.printList(drugList); break; case 5: System.out.println("姓名:杨风梅\t学号:2105020241"); dss.sortByYid(); dss.printList(drugList); break; case 0: System.out.println("--------------------退出药品销售统计系统--------------------"); System.exit(0); break; default: System.out.println("输入错误,请重新输入!"); break; } }
这段代码是一个药店药品销售统计系统的主函数,它包括了一个无限循环,通过输入选择的操作来实现对药品记录的显示、单价、销售量、销售额的排序以及按药品编号进行排序等功能。具体实现的方法在DrugStoreSystem类中,这里只是通过调用其方法来完成操作。同时,程序在每次输出操作前都会输出作者的姓名和学号。
阅读全文