首页 > 代码库 > 6.2心得

6.2心得

1、水仙花束
编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。
所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。
例如:153就是一个水仙花数: 153 = 1^3 + 5^3 + 3^3
所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如, 153就是一水仙花数,因为153 = 13+53+33
#include <iostream>
using namespace std;
int flower(int n);
int main()
{
int i,max1=0,max2=0; // max1--最大值 max2---次大值
cout<<"水仙花数为: ";
for(i=100;i<1000;i++){
if(flower(i)){
cout<<i<<" ";
if(i>max1){
max2=max1;
max1=i;
}
else if(i<max1&&i>max2)max2=i;
}
}
cout<<"\n"<<"最大为:"<<max1<<"\n"<<"次大值为: "<<max2<<"\n";
return 0;
}
int flower(int n)
{ //判断n是否为水仙数
int hun,ten,k;
hun=n/100;
ten=(n-100*hun)/10;
k=n%10;
if(n==hun*hun*hun+ten*ten*ten+k*k*k)return 1;
else return 0;

2、冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
}冒泡排序算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

3、选择排序
选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,
第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中
最小的数值与第N-1个元素交换,至此选择排序完成。
插入排序的基本思想是在遍历数组的过程中,假设在序号 i (i>=1)之前的元素即 [0..i-1] 都已经排好序,
本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x “腾位置”,
最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间复杂度和空间复杂度分别为O(n2) 和 O(1)。

6.2心得