- 博客(6)
- 收藏
- 关注
原创 leetcode1两数之和
解法一code: class Solution { public: vector twoSum(vector& nums, int target) { int len = nums.size(); for(int i = 0; i < len-1; i++) { for(int j = i + 1; j < len; j++) { if(nums[i] + nums[j] == target) return {i,j}; } } return {}; } }; 由于第一次刷leetcod
2020-06-15 12:43:08 124
原创 归并排序
code: #define maxn 100 void merge(int arr[],int l1,int r1,int l2,int r2) { int i=l1,j=l2,temp[maxn],index=0; while(i<=r1&&j<=r2) { if(arr[i]<=arr[j]) { temp[index++]=arr[i++]; } else { temp[index++]=arr[j++]; } } while(i<=r1) temp[index
2020-06-13 10:08:34 76
原创 快速排序
code: int partition(int arr[],int left,int right) { int temp=arr[left]; while(left<right) { while(left<right&&arr[right]>temp) { right–; } arr[left]=arr[right]; while(left<right&&arr[left]<=temp) { left++; } arr[right]=arr[le
2020-06-12 11:05:08 124
原创 选择排序
code: for(int i=0;i<10;i++) { int k=i; for(int j=i;j<10;j++) { if(arr[j]<arr[k]) { k=j; } } if(i!=k) //if判断条件可以不加,当arr[k]=arr[i]时,其实仍能交换,也不会浪费太多时间。 { int temp=arr[i]; arr[i]=arr[k]; arr[k]=temp; } } 其实选择排序和冒泡排序很相似,
2020-06-11 12:03:47 75
原创 冒泡排序
冒泡排序code: int arr[10]={4,5,6,7,8,9,1,2,3,0}; for(int i=0;i<9;i++) { for(int j=0;j<=9-i;j++) { if(arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } 冒泡排序本质是对一个含n个数字的数组进行两两相邻比较,其中i为趟数,j为比较次数,每次比较完后就将bigger或smaller后移一位,直到‘一端’,而每一
2020-06-11 09:12:04 76
原创 直接插入排序
code: for(int i=2;i<=n;i++) { int temp=a[i],j=i; while((j>1)&&(temp<a[j-1])) { a[j]=a[j-1]; j–; } a[j]=temp; } 直接插入排序其实是在一个有序数列里不断插入数字,达到排序的目的,这里头设置了中间变量temp和j以便进行比较。但是a[j]=a[j-1];这里毕竟不是交换,所以还得在循环外再赋值。 for(int i=1;i<10;i++) { int temp=a
2020-06-11 09:10:08 79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人