数组
1.折半查找

#include <stdio.h> #define N 10 void main() { int i, low, mid, high, key, found; int list[N+1]={0,57,65,72,75,78,79,83,87,91,97}; printf("Sorted list:\n"); for (i=1;i<=N;i++) printf("%-4d", list[i]); printf("\n"); printf("Input search key:"); scanf("%d", &key); low=1; high=N; found=0; while ((low<=high) && (! found)) { mid=(low+high)/2; if (key>list[mid]) low=mid+1; else if (key==list[mid]) found=1; else high=mid-1; } if (found) printf("Success! The position is %d.", mid); else printf("Not found!"); }
2.冒泡排序

#include <stdio.h> #define N 10 void main() { int i, j; int list[N], tmp; printf("Input TEN integers to construct a list:"); for (i=0;i<N;i++) scanf("%d",&list[i]); printf("OK! The list has been constructed:\n"); for (i=0;i<N;i++) printf("%-4d",list[i]); printf("\nTo sort...\n"); for (i=0;i<N-1;i++) { for (j=0;j<N-i-1;j++) { if (list[j]>list[j+1]) { tmp=list[j]; list[j]=list[j+1]; list[j+1]=tmp; } } } printf("Finished! The list has been sorted:\n"); for (i=0;i<N;i++) printf("%-4d",list[i]); }
3.简单选择排序

#include <stdio.h> #define N 10 void main() { int i, j, min; int list[N], tmp; printf("Input TEN integers to construct a list:"); for (i=0;i<N;i++) scanf("%d",&list[i]); printf("OK! The list has been constructed:\n"); for (i=0;i<N;i++) printf("%-4d",list[i]); printf("\nTo sort...\n"); for (i=0;i<N-1;i++) { min=i; for (j=i+1;j<N;j++) { if (list[min]>list[j]) min=j; } if(min!=i) { tmp=list[i];list[i]=list[min];list[min]=tmp; } } printf("Finished! The list has been sorted:\n"); for (i=0;i<N;i++) printf("%-4d",list[i]); }
4.数据插入

#include <stdio.h> #define N 20 void main() { int i, j, x, len=9; int list[N] ={57,65,72,75,78,79,87,91,97}; printf("Sorted list:\n"); for (i=0;i<N;i++) printf("%-4d",list[i]); printf("\n"); printf("Input a integer to be inserted into the list:"); scanf("%d",&x); for (i=0;(x>list[i])&&(i<len);i++);//找到插入点 for (j=len;j>i;j--) //腾出位置 list[j]=list[j-1]; list[i]=x;//插入数据 len++; printf("The new list:\n"); for (i=0;i<len;i++) printf("%-4d", list[i]); printf("\n"); }
5.直接插入排序

#include<stdio.h> #include<math.h> #include<stdlib.h> #include<time.h> #define N 12 void main() { int a[N] = { 0 }; int i, j, len, key,k; srand((unsigned int)time(NULL)); for (i = 0; i < N; i++) { a[i] = rand() % 201 - 100; printf("%d ", a[i]); } printf("\n"); for (i = 0; i < N - 1; i++) { len = i + 1; key = a[i + 1]; for (j = 0; j < len && a[j] < key; j++); for (k = len; k >= j; k--) { a[k] = a[k - 1]; } a[j] = key; } for (i = 0; i < len; i++) printf("a[%d]=%d\n", i, a[i]); }

浙公网安备 33010602011771号