网站建设与网站优化,网站型建设模板,wordpress重新安装,手机视频转码vue设二维数组a[1…m#xff0c;1…n]#xff08;#xff09;含有m*n个整数。 写一个算法判断a中所有元素是否互不相同#xff0c;并输出相关信息#xff08;yes/no) 分析其时间复杂度
代码思路#xff1a; 这种如果纯暴力做的话时间复杂度非常高。 我这里考虑把题目中的二…设二维数组a[1…m1…n]含有m*n个整数。 写一个算法判断a中所有元素是否互不相同并输出相关信息yes/no) 分析其时间复杂度
代码思路 这种如果纯暴力做的话时间复杂度非常高。 我这里考虑把题目中的二维数组的数据全部复制到一维数组中对一维数组的数据进行排序升序排完序之后在通过遍历一维数组看当前遍历到的数组元素和下一个数组元素是否相同如果出现一个相同则输出no如果遍历完整个数组都没有发现相同元素输出yes。
排序算法这里选择插入排序时间复杂度为On2,你也可以选择其他的。
void InsertSort(int arr[],int n) {//插入排序-升序int i 0;int j 0;for (i 1;i 10;i) {int tmp arr[i];for (j i - 1;j 0;j--) {if (tmp arr[j]) {arr[j 1] arr[j];}else {break;}}arr[j 1] tmp;}
}int main()
{int i 0;int j 0;int k 0;int a[20][20];//默认最大m,n不超过20int m 0;int n 0;int arr[400] { 0 };printf(请输入数组行数列数);scanf(%d, m);scanf(%d, n);printf(\n);printf(请输入数组数据:\n);for (i 0;i m;i) {for (j 0;j n;j) {scanf(%d, a[i][j]);arr[k] a[i][j];k;}}InsertSort(arr, n);//对数组元素排序for (i 0;i k-1;i) {if (arr[i] arr[i 1]) {printf(no);return 0;}}//到这里还没return出去说明没有相同的printf(yes);return 0;}两个测试用例如下