
排序
易于我自己理解的排序写法
鸡康
这个作者很懒,什么都没留下…
展开
-
基数排序(代码)带注释
【代码】基数排序(代码)带注释。原创 2023-12-09 21:00:48 · 195 阅读 · 0 评论 -
二分查找!
int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { // 注意 int mid = (right + left) / 2; if(nums[mid] == target) return mid; else if (nums[m原创 2021-06-12 17:05:17 · 68 阅读 · 0 评论 -
归并排序
#include <bits/stdc++.h>using namespace std;void merge(int *a,int *temp,int left,int right,int mid){//合并两个有序数组 int i=left;//i指向a[left]到a[mid]这个子数组 int j=mid+1;//j指向a[mid]到a[right]这个子数组 int point_to_temp=left;//指向temp这个数组 while(i<=mid原创 2021-02-17 17:10:32 · 83 阅读 · 0 评论 -
希尔排序
#include<stdio.h>void shell_sort(int *a, int n) { int increment=n; do { increment=increment/3+1; int i,j,temp; for(i=increment;i<n;i++){ temp=a[i]; for(j=i-increment;j>=0;j-=increment){ if(temp<a[j]) a[原创 2021-02-17 11:46:32 · 75 阅读 · 0 评论 -
直接插入排序
#include<stdio.h>void insert_sort(int *a, int n) { int i,j,temp; for(i=1;i<n;i++){//从1开始就是默认第一个元素已经排好序了 temp=a[i]; for(j=i-1;j>=0;j--){ if(temp<a[j]) a[j+1]=a[j];//记录往后移动 else break; } a[j+1]=temp; } }int main原创 2021-02-17 11:23:56 · 76 阅读 · 0 评论 -
简单选择排序
#include<stdio.h>void swap(int *a,int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp;}void select_sort(int *a, int n) { int i,j,min; for(i=0;i<n-1;i++){ min=i; for(j=i+1;j<n;j++){//这个循环是找出最小记录的下标 if(a[min]>a[j]) min=j;原创 2021-02-17 11:16:23 · 94 阅读 · 2 评论 -
冒泡排序
#include<stdio.h>void swap(int *a,int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp;}void bubble_sort(int *a, int n) { for(int i=0;i<n;i++) for(int j=0;j<n-i;j++) if(a[j]>a[j+1])原创 2021-02-17 11:05:34 · 84 阅读 · 0 评论 -
快速排序
#include <bits/stdc++.h>using namespace std;int get_index_of_pivot(int *a,int left,int right){//获取pivot的下标 int pivot=a[left];//默认使用数组的第一个元素作为pivot,先用一个变量将pivot的值存起来,循环结束再落位 while(left<right){//然后将pivot放在数组合适的位置上使得pivot左端的数都比pivot小,右端的数都比它大原创 2021-02-17 10:49:06 · 104 阅读 · 0 评论 -
堆排序
#include <bits/stdc++.h>using namespace std;void swap(int *a,int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp;}void adjust(int *a,int now_node,int n){ int i=now_node;//当前结点 int j=2*now_node+1;//当前结点的左孩子,j+1就是当前结点的右孩子 while(j<n){原创 2021-02-13 15:27:57 · 132 阅读 · 4 评论