对数组 int arr[]={12,32,45,56,2}中的偶数,实现冒泡排序

本文介绍了一个使用C语言编写的程序,该程序首先从原始数组中筛选出所有偶数并将其存储到一个新的数组中,随后对这个包含偶数的新数组进行冒泡排序。通过示例代码展示了具体的实现细节。
  1 #include<stdio.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     int arr[]={12,32,45,56,2};
  5     int a[4];
  6     int t,count,n=0;
  7     for(int i=0;i<5;i++){
  8         if(arr[i]%2==0){
  9             a[n]=arr[i];
 10         n++;}
 11     }
 12     for(int i=1;i<4;i++){
 13         t=0;count++;
 14         for(int j=0;j<3;j++){
 15              if(a[j]>a[j+1]){
 16                 t=a[j];
 17                 a[j]=a[j+1];
 18                 a[j+1]=t;
 19                count++;
 20                  }
 21          if(count==0)
 22              break;
 23             }
 24     }
 25     for(int i=0;i<4;i++){
 26        printf("a[%d]=%d\n",i,a[i]);
 27     }
 28     return 0;
 29 }

 先将数组中偶数存到另一个数组中,在进行冒泡排序

我自己写了62个public class ScientificMethods { // 1. 求和 public static int sum(int[] arr) { int s = 0; for (int n : arr) s += n; return s; } // 2. 平均值 public static double average(int[] arr) { return (double) sum(arr) / arr.length; } // 3. 最大值 public static int max(int[] arr) { int m = arr[0]; for (int n : arr) if (n > m) m = n; return m; } // 4. 最小值 public static int min(int[] arr) { int m = arr[0]; for (int n : arr) if (n < m) m = n; return m; } // 5. 标准差 public static double standardDeviation(int[] arr) { double avg = average(arr); double s = 0; for (int n : arr) s += Math.pow(n - avg, 2); return Math.sqrt(s / arr.length); } // 6. 冒泡排序 public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; } } } } // 7. 选择排序 public static void selectionSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) minIndex = j; } int t = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = t; } } // 8. 插入排序 public static void insertionSort(int[] arr) { for (int i = 1; i < arr.length; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } // 9. 线性查找 public static int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) return i; } return -1; } // 10. 二分查找 public static int binarySearch(int[] arr, int target) { int l = 0, r = arr.length - 1; while (l <= r) { int m = l + (r - l) / 2; if (arr[m] == target) return m; else if (arr[m] < target) l = m + 1; else r = m - 1; } return -1; } // 11. 阶乘 public static long factorial(int n) { long res = 1; for (int i = 2; i <= n; i++) res *= i; return res; } // 12. 平方根(牛顿法) public static double sqrt(double x) { double guess = x / 2.0; while (Math.abs(guess * guess - x) > 1e-10) { guess = (guess + x / guess) / 2; } return guess; } // 13. 最大公约数 public static int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // 14. 最小公倍数 public static int lcm(int a, int b) { return a * (b / gcd(a, b)); } // 15. 判断质数 public static boolean isPrime(int n) { if (n < 2) return false; for (int i = 2; i <= sqrt(n); i++) if (n % i == 0) return false; return true; } // 16. 交换两个整数 public static void swap(int[] arr, int i, int j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } // 17. 反转数组 public static void reverseArray(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { swap(arr, i, arr.length - 1 - i); } } // 18. 判断数组是否排序 public static boolean isSorted(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { if (arr[i] > arr[i + 1]) return false; } return true; } // 19. 数组去重 public static int[] removeDuplicates(int[] arr) { int n = arr.length; if (n == 0) return new int[0]; int[] temp = new int[n]; int j = 0; for (int i = 0; i < n - 1; i++) { if (arr[i] != arr[i + 1]) { temp[j++] = arr[i]; } } temp[j++] = arr[n - 1]; int[] result = new int[j]; System.arraycopy(temp, 0, result, 0, j); return result; } // 20. 数组合并 public static int[] mergeArrays(int[] a, int[] b) { int[] result = new int[a.length + b.length]; System.arraycopy(a, 0, result, 0, a.length); System.arraycopy(b, 0, result, a.length, b.length); return result; } // 21. 数组交集 public static int[] intersection(int[] a, int[] b) { int[] temp = new int[Math.min(a.length, b.length)]; int k = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { if (a[i] == b[j]) { temp[k++] = a[i]; break; } } } int[] result = new int[k]; System.arraycopy(temp, 0, result, 0, k); return result; } // 22. 数组差集 public static int[] difference(int[] a, int[] b) { int[] temp = new int[a.length]; int k = 0; for (int i = 0; i < a.length; i++) { boolean found = false; for (int j = 0; j < b.length; j++) { if (a[i] == b[j]) { found = true; break; } } if (!found) temp[k++] = a[i]; } int[] result = new int[k]; System.arraycopy(temp, 0, result, 0, k); return result; } // 23. 数组并集 public static int[] union(int[] a, int[] b) { int[] merged = mergeArrays(a, b); java.util.Arrays.sort(merged); return removeDuplicates(merged); } // 24. 数组最大值索引 public static int maxIndex(int[] arr) { int index = 0; for (int i = 1; i < arr.length; i++) { if (arr[i] > arr[index]) index = i; } return index; } // 25. 数组最小值索引 public static int minIndex(int[] arr) { int index = 0; for (int i = 1; i < arr.length; i++) { if (arr[i] < arr[index]) index = i; } return index; } // 26. 求数组中位数 public static double median(int[] arr) { java.util.Arrays.sort(arr); int mid = arr.length / 2; if (arr.length % 2 == 0) { return (arr[mid - 1] + arr[mid]) / 2.0; } else { return arr[mid]; } } // 27. 求数组众数 public static int mode(int[] arr) { int maxCount = 0, mode = arr[0]; for (int i = 0; i < arr.length; i++) { int count = 0; for (int j = 0; j < arr.length; j++) { if (arr[j] == arr[i]) count++; } if (count > maxCount) { maxCount = count; mode = arr[i]; } } return mode; } // 28. 判断回文数组 public static boolean isPalindrome(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { if (arr[i] != arr[arr.length - 1 - i]) return false; } return true; } // 29. 计算数组差分 public static int[] diff(int[] arr) { int[] result = new int[arr.length - 1]; for (int i = 0; i < arr.length - 1; i++) { result[i] = arr[i + 1] - arr[i]; } return result; } // 30. 累加数组 public static int[] cumulativeSum(int[] arr) { int[] res = new int[arr.length]; res[0] = arr[0]; for (int i = 1; i < arr.length; i++) { res[i] = res[i - 1] + arr[i]; } return res; } // 31. 累乘数组 public static int[] cumulativeProduct(int[] arr) { int[] res = new int[arr.length]; res[0] = arr[0]; for (int i = 1; i < arr.length; i++) { res[i] = res[i - 1] * arr[i]; } return res; } // 32. 判断两个数组是否相等 public static boolean arraysEqual(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) return false; } return true; } // 33. 生成随机数组 public static int[] randomArray(int size, int bound) { int[] arr = new int[size]; java.util.Random rand = new java.util.Random(); for (int i = 0; i < size; i++) { arr[i] = rand.nextInt(bound); } return arr; } // 34. 数组去零 public static int[] removeZeros(int[] arr) { int count = 0; for (int n : arr) if (n != 0) count++; int[] res = new int[count]; int idx = 0; for (int n : arr) if (n != 0) res[idx++] = n; return res; } // 35. 数组去负数 public static int[] removeNegatives(int[] arr) { int count = 0; for (int n : arr) if (n >= 0) count++; int[] res = new int[count]; int idx = 0; for (int n : arr) if (n >= 0) res[idx++] = n; return res; } // 36. 数组去正数 public static int[] removePositives(int[] arr) { int count = 0; for (int n : arr) if (n <= 0) count++; int[] res = new int[count]; int idx = 0; for (int n : arr) if (n <= 0) res[idx++] = n; return res; } // 37. 数组去奇数 public static int[] removeOdds(int[] arr) { int count = 0; for (int n : arr) if (n % 2 == 0) count++; int[] res = new int[count]; int idx = 0; for (int n : arr) if (n % 2 == 0) res[idx++] = n; return res; } // 38. 数组偶数 public static int[] removeEvens(int[] arr) { int count = 0; for (int n : arr) if (n % 2 != 0) count++; int[] res = new int[count]; int idx = 0; for (int n : arr) if (n % 2 != 0) res[idx++] = n; return res; } // 39. 数组元素平方 public static int[] square(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = arr[i] * arr[i]; return res; } // 40. 数组元素立方 public static int[] cube(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = arr[i] * arr[i] * arr[i]; return res; } // 41. 数组绝对值 public static int[] abs(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.abs(arr[i]); return res; } // 42. 数组元素取模 public static int[] mod(int[] arr, int m) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = arr[i] % m; return res; } // 43. 数组元素取余 public static int[] remainder(int[] arr, int d) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = arr[i] % d; return res; } // 44. 数组元素取整 public static int[] floor(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = (int) Math.floor(arr[i]); return res; } // 45. 数组元素向上取整 public static int[] ceil(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = (int) Math.ceil(arr[i]); return res; } // 46. 数组元素四舍五入 public static int[] round(int[] arr) { int[] res = new int[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.round(arr[i]); return res; } // 47. 数组元素取对数 public static double[] log(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.log(arr[i]); return res; } // 48. 数组元素取指数 public static double[] exp(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.exp(arr[i]); return res; } // 49. 数组元素取正弦 public static double[] sin(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.sin(arr[i]); return res; } // 50. 数组元素取余弦 public static double[] cos(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.cos(arr[i]); return res; } // 51. 数组元素取正切 public static double[] tan(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.tan(arr[i]); return res; } // 52. 数组元素取反正弦 public static double[] asin(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.asin(arr[i]); return res; } // 53. 数组元素取反余弦 public static double[] acos(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.acos(arr[i]); return res; } // 54. 数组元素取反正切 public static double[] atan(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.atan(arr[i]); return res; } // 55. 数组元素取自然对数 public static double[] ln(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.log(arr[i]); return res; } // 56. 数组元素取常用对数(以10为底) public static double[] log10(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.log10(arr[i]); return res; } // 57. 数组元素取以2为底的对数 public static double[] log2(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.log(arr[i]) / Math.log(2); return res; } // 58. 数组元素取指数(以e为底) public static double[] expE(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.exp(arr[i]); return res; } // 59. 数组元素取幂 public static double[] pow(int[] arr, int exponent) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.pow(arr[i], exponent); return res; } // 60. 数组元素取指数(以任意底为底) public static double[] powBase(int[] arr, int base) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.pow(base, arr[i]); return res; } // 61. 数组元素取平方根 public static double[] sqrtArray(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.sqrt(arr[i]); return res; } // 62. 数组元素取立方根 public static double[] cbrtArray(int[] arr) { double[] res = new double[arr.length]; for (int i = 0; i < arr.length; i++) res[i] = Math.cbrt(arr[i]); return res; } }
08-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值