冒泡排序
#include<cstdio>
#include<cstdlib>
//#include<cstring>
//#include<cstdbool>
int main(){
int n;
//int a[1000];
//memset(a,0,sizeof(a));
scanf("%d",&n);
int *a;
a = (int*)malloc( n * sizeof(int));//动态申请数组空间
for(int i = 0; i < n; i++){
scanf("%d",&a[i]);
}
for(int i = 1; i <= n; i++){
for(int j = 0; j < n-i; j++){
if(a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i = 0; i < n; i++){
printf("%d ", a[i]);
}
system("pause");
return 0;
}
运行结果
10
2 9 7 5 11 4 8 3 1 8
1 2 3 4 5 7 8 8 9 11 请按任意键继续. . .
**
选择排序
#include<cstdio>
#include<cstdlib>
int main(){
int n;
scanf("%d", &n);
int* arr;
arr = (int*)malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d",&arr[i]);
}
for(int i = 0; i < n; i++){
int k = i;
for(int j = i; j < n; j++){
if(arr[j] < arr[k]){
k = j;
}
}
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
for(int i = 0; i < n; i++){
printf("%d ", arr[i]);
}
system("pause");
return 0;
}
快速排序
#include<cstdio>
#include<cstdlib>
int Partition(int A[], int left, int right){
int temp = A[left];
while(left < right){
while(left < right && A[right] > temp)
right--;
A[left] = A[right];
while(left < right && A[left] < temp)
left ++;
A[right] = A[left];
}
A[left] = temp;
return left;
}
void quickSort(int A[], int left, int right){
if(left < right){
int pos = Partition(A, left, right);
quickSort(A, left, pos-1);
quickSort(A, pos+1,right);
}
}
int main(){
int *A;
int n;
scanf("%d", &n);
A = (int*)malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d", &A[i]);
}
quickSort(A, 0 , n-1);
for(int i = 0; i < n; i++){
printf("%d ", A[i]);
}
system("pause");
return 0;
}
运行结果
7
8 5 9 2 4 3 1
1 2 3 4 5 8 9 请按任意键继续. . .
二分查找
#include<cstdio>
#include<cstdlib>
int binarySearch(int A[],int left, int right, int x){
int mid;
while(left <= right){
mid = (left + right) / 2;
if(A[mid] == x)
return mid;
else if(A[mid] > x){
right = mid -1;
}
else{
left = mid + 1;
}
}
return -1;
}
int main(){
const int n = 10;
int A[n] = {1,3,4,6,7,8,10,11,12,15};
printf("%d %d\n", binarySearch(A, 0, n-1, 6), binarySearch(A, 0, n-1, 9));
system("pause");
return 0;
}
运行结果:
3 -1
结构体
**
#include<cstdio>
#include<cstdlib>
#include<cstring>
//#include<cstdbool>
struct Point{
int x, y;
Point(){}
Point(int _x, int _y): x(_x), y(_y) {}
}pt[10];
int main(){
int num = 0;
for(int i = 1; i <= 3; i++){
for(int j = 1; j <= 3; j++){
pt[num++] = Point(i, j);
}
}
for(int i = 0; i < num; i++){
printf("%d, %d\n", pt[i].x, pt[i].y);
}
system("pause");
return 0;
}
运行结果:
1, 1
1, 2
1, 3
2, 1
2, 2
2, 3
3, 1
3, 2
3, 3
请按任意键继续. . .
散列哈希
#include<cstdio>
#include<cstdlib>
const int maxn = 100010;
int hashTable[maxn] = {0};
int main(){
int n;
int m;
int x;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++){
scanf("%d", &x);
hashTable[x]++;
}
for(int i = 0; i < m; i++){
scanf("%d", &x);
printf("%d ",hashTable[x]);
}
system("pause");
return 0;
}
运行结果
9
7
8 6 3 2 1 9 0 3 9
9 7 4 8 7 6 2
2 0 0 1 0 1 1 请按任意键继续. . .