冒泡排序,插入排序,二分查找


void CTestDlg::OnButton5()
{
 // TODO: Add your control notification handler code here
 //冒泡排序
 int Data[] = {76,24,35,89,56,12,27};
 
 for(int i=0;i<sizeof(Data)/sizeof(Data[0]);i++)
 {
  for(int j=0;j<sizeof(Data)/sizeof(Data[0])-i-1;j++)
  {
   if(Data[j] > Data[j+1])
   {
    int tmp = Data[j+1];
    Data[j+1] = Data[j];
    Data[j] = tmp;
   }
  }
 }
}

void CTestDlg::OnButton6()
{
 // TODO: Add your control notification handler code here
 //二分查找
 int Data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 //int Data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};

 for(int i=0;i<sizeof(Data)/sizeof(Data[0]);i++)
 {
  int indexLow = 0;
  int indexHigh = sizeof(Data)/sizeof(Data[0]) - 1;

  int indexMid = (indexLow + indexHigh) / 2;
  
  int nCount = 1;

  int Search = i;

  if((Search < Data[indexLow]) || (Search > Data[indexHigh]))
  {
   MessageBox("Error");

   return;
  }

  while(Data[indexMid] != Search)
  {
   nCount++;

   if(Data[indexMid] < Search)
   {
    indexLow = indexMid + 1;
   }
   else //Data[indexMid] > Search
   {
    indexHigh = indexMid - 1;
   }

   indexMid = (indexLow + indexHigh) / 2;
  }

  CString str;

  str.Format("Index = %d, nCount = %d/r/n", indexMid, nCount);

  TRACE(str);
 }
}

void CTestDlg::OnButton7()
{
 // TODO: Add your control notification handler code here
 //插入排序
 int Data[8] = {-1, 24, 76, 35, 89, 56, 12, 27};
 
 for(int i=2;i<sizeof(Data)/sizeof(Data[0]);i++)
 {
  if(Data[i] < Data[i-1])
  {
   Data[0] = Data[i];

   for(int j=i-1;Data[0] < Data[j];j--)
   {
    Data[j+1] = Data[j];
   }

   Data[j+1] = Data[0];
  }

  TRACE("%d %d %d %d %d %d %d %d/r/n", Data[0], Data[1], Data[2], Data[3], Data[4], Data[5], Data[6], Data[7]);
 }
}

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 行列式是线性代数的核心概念,在求解线性方程组、析矩阵特性以及几何计算中都极为关键。本教程将讲解如何用C++实现行列式的计算,重点在于如何输出数形式的结果。 行列式定义如下:对于n阶方阵A=(a_ij),其行列式由主对角线元素的乘积,按行或列的奇偶性赋予正负号后求和得到,记作det(A)。例如,2×2矩阵的行列式为det(A)=a11×a22-a12×a21,而更高阶矩阵的行列式可通过Laplace展开或Sarrus规则递归计算。 在C++中实现行列式计算时,首先需定义矩阵类或结构体,用二维数组存储矩阵元素,并实现初始化、加法、乘法、转置等操作。为支持数形式输出,需引入数类,包含子和母两个整数,并提供与整数、浮点数的转换以及加、减、乘、除等运算。C++中可借助std::pair表示数,或自定义结构体并重载运算符。 计算行列式的函数实现上,3×3及以下矩阵可直接按定义计算,更大矩阵可采用Laplace展开或高斯 - 约旦消元法。Laplace展开是沿某行或列展开,将矩阵解为多个小矩阵的行列式乘积,再递归计算。在处理数输出时,需注意避免无限循环和除零错误,如在数运算前先约简,确保母互质,且所有计算基于整数进行,最后再转为浮点数,以避免浮点数误差。 为提升代码可读性和可维护性,建议采用面向对象编程,将矩阵类和数类封装,每个类有明确功能和接口,便于后续扩展如矩阵求逆、计算特征值等功能。 总结C++实现行列式计算的关键步骤:一是定义矩阵类和数类;二是实现矩阵基本操作;三是设计行列式计算函数;四是用数类处理精确计算;五是编写测试用例验证程序正确性。通过这些步骤,可构建一个高效准确的行列式计算程序,支持数形式计算,为C++编程和线性代数应用奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值