标签:code 数组 元素 答案 alt 程序员 有序 结构 分治策略
查找 |
排序 |
5.选择排序法:
selectionSort方法实现两个循环,外层循环控制下一个最小值存储在那个位置,内层循环通过扫描所有大于等于外层循环指定索引的位置来找出剩余列表的最小值。
序列{ 8, 5, 2, 6, 9, 3, 1, 4, 0, 7 }进行选择排序的实现过程:
宏观图:
6.插入排序法:
序列{ 6, 5, 3, 1, 8, 7, 2, 4 }进行插入排序的实现过程如下:
宏观图:
7.冒泡排序法:
宏观:
8.快速排序法:
9.归并排序法:
宏观:
基数排序法 |
问题解决和分析:实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部,但在类的其他成员方法之外声明的。类的每个对象维护它自己的一份实例变量的副本。
问题解决和分析:
1.指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。
2.根据风格不同,程序员应该始终在最里层的嵌套元素上使用此注释,在那里使用才有效。如果要在特定的方法中取消显示某个警告,则应该注释该方法而不是注释它的类。
问题1:在实现pp9.3sorting类改编时,我对于归并排序和快速排序的循环次数的计算感觉到很迷茫,我不知道该如何计算。
public static <T extends Comparable<T>>
void mergeSort(T[] data)
{
times = times2 = 0;
long startTime=System.nanoTime();
mergeSort(data, 0, data.length - 1);
long endTime = System.nanoTime();
long temp = times + times2;
System.out.println("程序运行时间:" + (endTime - startTime) + "ns");
System.out.println("比较次数为:"+ temp);
}
private static int times;
private static <T extends Comparable<T>>
void mergeSort(T[] data, int min, int max)
{
if (min < max)
{
times++;
int mid = (min + max) / 2;
mergeSort(data, min, mid);
mergeSort(data, mid+1, max);
merge(data, min, mid, max);
}
}
通过引入times,来在循环中通过计算最后times相加的和。
还有一种是:
public static <T extends Comparable<T>>
void mergeSort(T[] data)
{
int count=0;
long startTime = System.nanoTime();//获取开始的时间;
count = mergeSort(data, 0, data.length - 1);
long endTime = System.nanoTime();//获取结束的时间;
System.out.println("程序所需时间:"+ (endTime - startTime) + "ns");
System.out.println("比较次数:"+ count);
}
private static <T extends Comparable<T>>
int mergeSort(T[] data, int min, int max)
{
int count = 0;
if (min < max)
{
int mid = (min + max) / 2;
mergeSort(data, min, mid);
mergeSort(data, mid+1, max);
merge(data, min, mid, max);
}
return count;
}
通过对下边类改成有返回值的类,将count返回。
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, (加3分)
代码调试中的问题和解决过程, 无问题
感想,体会真切的(加1分)
点评认真,能指出博客和代码中的问题的(加1分)
20172320
基于评分标准,我给以上博客打分:8分。得分情况如下:
这周将排序全学了一遍,感觉有些理解起来还好,写起来也还算好些,但是有些知道它运行的流程但代码实现做不到,这就让人很着急。我还会再看看代码,将二分法实现的归并排序,快速排序以及基数排序再多研究一下,把不懂的搞懂。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 | |
第二周 | 1306/1306 | 1/2 | 20/28 | |
第三周 | 1291/2597 | 1/3 | 18/46 | |
第四周 | 4361/6958 | 2/5 | 20/66 | |
第五周 | 1755/8713 | 1/6 | 20/86 |
计划学习时间:10小时
实际学习时间:8小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
20172327 2018-2019-1 《程序设计与数据结构》第五周学习总结
标签:code 数组 元素 答案 alt 程序员 有序 结构 分治策略
原文地址:https://www.cnblogs.com/mrf1209/p/9787932.html