问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写程序,实现三种排序算法(选择、插入、冒泡)

发布网友 发布时间:2022-04-28 22:16

我来回答

1个回答

热心网友 时间:2022-05-11 04:19

选择排序如下:
#include <stdio.h>
#include <stdlib.h>

void choose_sort( int array[], int s, int e );

intmain( void )
{
intarray[100];
intnum;
inti;
intj;
intk;

printf( "input the amout(<100) of the array:" );
scanf( "%d", &num );

for( i = 0; i < num; i++)
{
scanf( "%d", array + i );
}
choose_sort( array, 0, num - 1 );
/*
for( i = 0; i < num - 1; i++ )
{
k= i;
for( j = i + 1; j < num; j++ )
{
k= array[j] < array[k] ? j : k;
}
if( i != k )
{
array[i] ^= array[k];
array[k] ^= array[i];
array[i] ^= array[k];
}
}
*/

printf( "the result of choose sort:\n" );
for( i = 0; i < num; i++)
{
printf( "%d ", array[i] );
}
printf( "\n" );

system( "pause" );
return0;
}

void choose_sort( int array[], int s, int e )
{
int i;
int j;
int k;

for( i = s; i < e; i++ )
{
k = i;
for( j = i + 1; j <= e; j++ )
{
k = array[k] > array[j] ? j : k;
}
if( k != i )
{
array[i] ^= array[k];
array[k] ^= array[i];
array[i] ^= array[k];
}
}
}

插入排序如下:
#include <stdio.h>
#include <stdlib.h>

/*/already check */
void insert_sort( int array[], int s, int e );

int main( void )
{
intarray[100];
intnum;
int i;
intkey;
intj;

printf( "input the amount(<100) of array: " );
scanf( "%d", &num );

for( i = 0; i < num; i++ )
{
scanf( "%d", array + i );
}

insert_sort( array, 0, num - 1 );
/*
for( i = 1; i < num; i++ )
{
key = array[i];
j= i- 1;
while( j >= 0 && array[j] > key )
{
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
*/
printf( "insert sort result:\n" );
for( i = 0; i < num; i++ )
{
printf( "%d ", array[i] );
}
printf( "\n" );

system( "pause" );
return 0;
}

void insert_sort( int array[], int s, int e )
{
int i;
int j;
int key;

for( i = s + 1; i <= e; i++)
{
key = array[i];
for( j = i - 1; j >= s && array[j] > key; j-- )
{
array[j + 1] = array[j];
}
array[j + 1] = key;
}
}
冒泡排序如下:
#include <stdio.h>
#include <stdlib.h>

voidbubble_sort( int array[], int s, int e );

intmain( void )
{
inti;
intnum;
intarray[100];

printf( "input amount(<100) of number: " );
scanf( "%d", &num );
for( i = 0; i < num; i++ )
{
scanf( "%d", array + i );
}

bubble_sort( array, 0, num - 1 );

printf( "result of bubble sort:\n" );
for( i = 0; i < num; i++ )
{
printf( "%d ", array[i] );
}
printf( "\n" );

system( "pause" );
return0;
}
/*
void bubble_sort( int array[], int s, int e )
{
int i;
int j;

for( i = e; i > s; i-- )
{
for( j = s + 1; j <= i; j++ )
{
if( array[j - 1] > array[j] )
{
array[j] ^= array[j - 1];
array[j - 1]^= array[j];
array[j] ^= array[j - 1];
}
}
}
}
*/
注意:以上三个算法的main函数部分是为了让你输入一些数来测试排序算法而写的,排序的具体实现另写成一个函数。

补充题:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int search(char* str1, char* str2);

main()
{
char str1[100];
char str2[100];
int result;

printf("input first string: ");
scanf("%s", str1);
printf("input first string: ");
scanf("%s", str2);

result = search(str1, str2);
if(result < 0){
printf("str2 is not in str1.\n");
}
else{
printf("str2 is in str1, and begins at %d.\n", result);
}
system("pause");
}

int search(char* str1, char* str2){
int len1 = strlen(str1);
int len2 = strlen(str2);
int i;
int j;
int k;

i = 0;
while(i <= len1 - len2){
j = 0;
k = i;
while(j < len2 && str1[k] == str2[j]){
j++;
k++;
}
if(j == len2){
return i;
}
i++;
}
return -1;
}
注意:main也是测试用的,具体实现写成一个函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谷歌浏览器怎么设置成中文_谷歌浏览器设置中文语言 【谷歌浏览器技巧】谷歌浏览器如何更改语言? 史上最全ETF全解 证券ETF是深市的吗 怎样把莲藕肉丸子做的好吃? 高三语文小说赏析小说形象分析与答题技巧 人物形象题答题技巧 借助什么分析小说的人物形象 脖子旁边疼是什么原因 在群里不是好友怎么把群里人建另一个群 高分咨询:问用冒泡法和选择法分别实现对数组的排序,请举出些实例 谁能帮我具体分析下插入排序,冒泡排序 冒泡排序选择排序插入排序比较 写排序的几种算法,简单选择排序,直接插入排序,冒泡排序,详细点 win10怎么添加我的电脑快捷方式到桌面上 冒泡排序,选择排序,插入排序的相同点和区别 关于简单选择排序、直接插入排序和冒泡排序 win7怎么在“我的电脑”里添加快捷方式 谁能帮我具体分析下插入排序、冒泡排序、选择排序三种方法的优劣?着 ... win7怎么添加“我的电脑”快捷方式到桌面上侧? 上海市27年公令2023年退休养老金拿多少 上海退休金计算规定 在上海工作41年今年退休养老金多少? 上海私企退休金每月多少钱 自己手机双卡双待没钱了怎么查询自己手机号码 王震宇的发表的主要文章目录 上海2万工资退休后养老金多少 上海退休工资一般多少 双卡双待的手机查自己的卡号怎么查? 上海退休人员养老金 ...插入排序、希尔、冒泡排序、快速、选择排序算法,并计算每种排序算法... 请用选择排序算法,冒泡排序算法和插入排序算法三种算法,排列下列数:14 7 23 31 4 完成直接插入排序、简单选择排序和冒泡排序, 选作其它排序算法, 了解... 输入10个整数,分别用冒泡排序,简单选择排序和直接插入排序算法对其进行排序输出。求大神,紧急。 冒泡排序和插入排序以及选择排序 写出冒泡排序选择排序插入排序归并排序快速排序在最坏最坏及平均情况... 你们生病怎么跟领导请假 ? 作业 使用O分析比较名次排序、选择 排序、冒泡排序、插入排序最好 和最... C语言实现冒泡排序,选择排序,插入排序及其移动次数 孩子生病向领导请假条怎么写 小孩生病了怎么跟园长请假 孩子老是反复发烧怎么和老师请假了? 跟领导请假理由 一周岁宝宝生日送什么礼物好 假如第一天去政府部门工作恰巧遇到孩子生病发高烧,该如何与领导沟通 一周岁小朋友送什么礼物好 小朋友一周岁送什么礼物 一周岁小孩生日送什么礼物? 二级建造师考完试多长时间拿到证 韭菜除了做馅,还有哪些简单又美味的做法?