数组

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]);
}

 

posted @ 2021-12-02 20:49  妖孽教主  阅读(43)  评论(0)    收藏  举报