您好,登錄后才能下訂單哦!
這篇文章主要介紹c++如何實現排序和查找,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1、用冒泡法對數組進行排序(升序)
#include <stdio.h>
#include <stdlib.h>
void sort(int a[], int n)
{
int i, j, t;
for (i = 0; i < n-1 ; i++)
{
for (j = 0; j < n-1; j++)
{
if (a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main()
{
int a[5], i;
for (i = 0; i < 5; i++)
{
printf("input a[%d]=", i);
scanf("%d", &a[i]);
}
sort(a, 5);
for (i = 0; i < 5; i++)
{
printf("%4d", a[i]);
}
system("pause");
return 0;
}
2、用插入法排序將輸入到數組中的元素進行排序
#include <stdio.h>
#include <stdlib.h>
void fun(int a[], int n)
{
int k, j, t;
for (j = 1; j < n; j++)
{
t = a[j];
k = j - 1;
while (k >= 0 && t > a[k])
{
a[k + 1] = a[k];
k--;
}
a[k + 1] = t;
}
}
int main()
{
int a[5], i;
for (i = 0; i < 5; i++)
{
printf("input a[%d]=", i);
scanf("%d", &a[i]);
}
fun(a, 5);
for (i = 0; i < 5; i++)
{
printf("%4d", a[i]);
}
system("pause");
return 0;
}
3、用選擇法將輸入的10個數進行排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, min, tem, a[10];
for (i = 0; i < 10; i++)
{
printf("input a[%d]=", i);
scanf("%d", &a[i]);
}
for (i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
for (i = 0; i < 10 - 1; i++)
{
min = i;
for (j = i + 1; j < 10; j++)
{
if (a[min] > a[j])
{
min = j;
}
}
tem = a[i];
a[i] = a[min];
a[min] = tem;
}
printf("\n");
for (i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
system("pause");
return 0;
}
4、用折半查找法,將查看輸入的數字是否在10個元素的升序數組中,如果在是第幾個
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10] = { 12,32,45,62,71,76,80,85,90,95 };
int num, bott, top, mid;
printf("input a number:");
scanf("%d", &num);
bott = 0;
top = 9;
while (bott <= top)
{
mid = (bott + top) / 2;
if (num == a[mid])
{
printf("%d是第%d個數", num, mid + 1);
break;
}
else if (num < a[mid])
{
top = mid - 1;
}
else
{
bott = mid + 1;
}
}
if (bott > top)
{
printf("no\n");
}
system("pause");
return 0;
}
以上是“c++如何實現排序和查找”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。