零零散散做了一些水题,基础实在很着急。
今天大概学了些什么呢,待我一一叙述:
排序这里学习到了两种,一个是直接插入排序(两个数组一个是目标数组 另一个则是比较数组 第一重循环 则是控制目标数组的遍历 i N;第二重则是控制 已经排序好了的比较数组,找到目标数组第i个元素在比较数组中比较大小第一次出现变化的地方,确定数据移动范围开始位置,记作posi j i;将比较数组中数据从第posi个开始整体向下一个位置移动;最后把目标数组中第i个位置的元素放到比较数组中第posi个位置 即可)
(
for(int i = 0; i <5 ; i ++)
{
for(j = 0; j < i; j ++)
if(b[j] > a[i])//找到第一个比a[i]大的数,确定开始移动的数据范围
{
break;
}
temp = j;//避免被全局变量给覆盖
for(j = i - 1 ; j >= temp; j --)//从temp个数据向后移动一个单位
{
b[j + 1] = b[j];
}
b[temp] = a[i];//把a[i]放到比它大的第一个数的位置
}),
另一个是冒泡排序( bool bechange = true; N 循环I N- 1趟 (bechange = false);每趟比较j N – 1 – i次将最大的数放在数组最后的位置(bechange = true);都不取等号 ;状态变量简化程序运行
bool bechange =true;//状态变量
for(int i = 0; i < N - 1 &&bechange; i ++)//N - 1趟比较
{
bechange = false;
for(j = 0; j < N - 1 - i; j ++)//每趟比较N- 1 - i次,每次比较都将最大的数放在了最后
if(a[j] < a[j + 1])
{
bechange = true;
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
});具体的还是自己慢慢回想,明天还是要向前推进吧,不急不急。
两个小数据的对换用异或比较方便,具体的就是a^=b;b^= a; a^=b。异或这里就是^0得原数,^1则是相反数;a^b^b = a。
做题还是要认真看题目,仔细找规律,不要着急着去做题,很多时候是错在小的地方,比如输入输出;或者某些特殊情况;或者题目中的限制条件或已知条件。
今天差不多就这样 还行 。
怪异的长春天气,冻死我了,差点就弄感冒了。不过睡一觉就好咯~拉拉,今天很想家,