数据结构(查找和排序)之二分查找和冒泡排序的原理及实现

排序:将一组数据按照固定的规则进行排序

一.冒泡排序:

原理:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,升序时将较大的数据放在后面,降序时将较小的数据放在后面,直至所有数据按照既定的要求完成所有数据排序

实现步骤:1.对要排序的元素进行遍历,两两比较(遍历到的元素与它的后一个元素进行比较),升序时,将大的元素放在右边。

2.遍历到倒数第二个元素时,最大的元素就已经在最右边。

3.重复执行第一步,但是遍历的元素不要上一轮遍历找到的最大的元素。

代码实现:

public class BubbleSorting {
    public static void main(String[] args) {
        //定义一个需要排序的数组
        int[] arr = {56,1,432,32,78,54,32,3,7,657,563,25,43,6,463,52,56};
        //打印排序前的数组
        System.out.println("排序前:" + Arrays.toString(arr));
        for (int i = 0; i < arr.length - 1; i++) {
            //每一轮循环结束下一次循环少遍历一次,所以为(i + 1)
            for (int j = 0; j < arr.length - (i + 1); j++) {
                //两两比较,遍历的元素大于下一个元素,进行交换
  
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,下面我将为您介绍一些常见的数据结构中的查找排序算法实现。 一、查找算法 1. 线性查找:从数组的第一个元素开始查找,逐个比较,直到找到目标元素或搜索完整个数组。 C++ 代码实现: ```c++ int linearSearch(int arr[], int n, int target) { for (int i = 0; i < n; i++) { if (arr[i] == target) { return i; } } return -1; // 没有找到目标元素 } ``` 2. 二分查找:对于有序数组,可以采用二分查找来提高查找效率。每次将数组分成两部分,判断目标元素在哪一部分,然后舍弃另一部分,继续在目标部分进行查找,直到找到目标元素或无法再分。 C++ 代码实现: ```c++ int binarySearch(int arr[], int n, int target) { int left = 0, right = n - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // 没有找到目标元素 } ``` 二、排序算法 1. 冒泡排序:比较相邻的元素,如果前一个比后一个大,就交换位置,重复这个过程,直到所有元素都排好序。 C++ 代码实现: ```c++ void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } } } } ``` 2. 快速排序:从数组中选择一个基准元素,将小于基准元素的放在左边,大于基准元素的放在右边,继续对左右两部分进行快速排序。 C++ 代码实现: ```c++ int partition(int arr[], int left, int right) { int pivot = arr[left]; // 选择第一个元素作为基准元素 int i = left, j = right; while (i < j) { while (i < j && arr[j] >= pivot) { j--; } arr[i] = arr[j]; while (i < j && arr[i] <= pivot) { i++; } arr[j] = arr[i]; } arr[i] = pivot; return i; } void quickSort(int arr[], int left, int right) { if (left < right) { int pivotIndex = partition(arr, left, right); quickSort(arr, left, pivotIndex - 1); quickSort(arr, pivotIndex + 1, right); } } ``` 以上就是常见的数据结构中的查找排序算法的实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值