冒泡排序能排字符串类型的吗(冒泡法对字符串排序)
本文目录
- 冒泡法对字符串排序
- java 用冒泡排序法排序字符串数组
- 给定程序功能是用冒泡法对6个字符串进行排序
- 如何使用冒泡排序方法排序一个字符串数组
- 字符串的冒泡排序(一定要用c语言)
- 字符串冒泡排序
- C语言字符串排序冒泡法
- C语言中 字符串怎么排序
- 冒泡排序:输入n个字符串,对其进行冒泡排序,使其按从小到大顺序输出
- C语言用冒泡法对六个字符串按从小到大排
冒泡法对字符串排序
#include 《stdio.h》
#include 《string.h》
char * greeting={ "Hello", "Good morning", "How are you", "How do you do", "Good afternoon", "Good evening"};
int main(){
int fl=1,i;
while(fl){
fl=0;
for(i=0;i《5;i++)
if(strcmp(greeting)》0){
char * temp;
temp=greeting;
greeting;
greeting=temp;
fl=1;
}
}
for(i=0;i《=5;i++)
printf("%s\n",greeting);
return 0;
}
java 用冒泡排序法排序字符串数组
@org.junit.Test
public void b(){
String strs={"avcd","bdce","avcdf","cced","bdce"};
for (int i = 0; i 《 strs.length; i++) {
//第一个字符的ascii码大,放前面
for (int j = i+1; j 《 strs.length; j++) {
int num=0;
compare(strs, i,j, num);
}
}
for (String string : strs) {
System.err.println(string);
}
}
/**
* @param strs
* @param i
* @param num
*/
private void compare(String strs, int i,int j, int num) {
//判断2个字符串谁的长度最小,则以当前长度作为num+1的最大标准
if (strs.length()) {
if (num+1《=strs.length()) {
if (strs.charAt(num)) {
String temp=strs;
strs;
strs=temp;
//若相等,则判断第二个
}else if(strs.charAt(num)){
num++;
compare(strs, i,j, num);
}
}
}else{
if (num+1《=strs.length()) {
if (strs.charAt(num)) {
String temp=strs;
strs;
strs=temp;
//若相等,则判断第二个
}else if(strs.charAt(num)){
num++;
compare(strs, i,j, num);
}
}else{
//表示当前字符串内容都一致,strs的长度大。 则放前面。
String temp=strs;
strs;
strs=temp;
}
}
}
给定程序功能是用冒泡法对6个字符串进行排序
我可以用冒泡排序数,实现6个数冒泡排序,第六行的n你可以指定成“cin》》n;”以达到n个数排序。若要字符串排序,你只要改char之类的就可以了。
以下为程序代码。
#include 《iostream》
using namespace std;
int main()
{
int i,j,n;
n=6;
int a;
for (i=1;i《=n;i++)
{
cin》》a;
}
for (i=1;i《=n-1;i++)
{
for (j=1;j《=n-i;j++)
{
if (a)
{
swap (a);
}
}
}
for (i=n;i》=1;i--)
{
cout《《a《《endl;
}
/*
以下为从小到大排序:
for (i=1;i《=n;i++)
cout《《a《《endl;
*/
system ("pause");
return 0;
}
本例为从大到小排序,从小到大排序方法在程序上已经进行注释。
本例使用程序:Dev-C++
你若使用VC++,请自行更改。
***隐藏网址***
如何使用冒泡排序方法排序一个字符串数组
public void sort(int data) {
int temp;
for(int i=0;i《data.length;i++){
for(int j=data.length-1;j》i;j--){
if(data){
SortUtil.swap(data,j,j-1);
}
}
}
}
/********************************各种 排序算法**********************************/
插入排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class InsertSort implements SortUtil.Sort{
public void sort(int data) {
int temp;
for(int i=1;i《data.length;i++){
for(int j=i;(j》0)&&(data);j--){
SortUtil.swap(data,j,j-1);
}
}
}
}
冒泡排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class BubbleSort implements SortUtil.Sort{
public void sort(int data) {
int temp;
for(int i=0;i《data.length;i++){
for(int j=data.length-1;j》i;j--){
if(data){
SortUtil.swap(data,j,j-1);
}
}
}
}
}
选择排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class SelectionSort implements SortUtil.Sort {
public void sort(int data) {
int temp;
for (int i = 0; i 《 data.length; i++) {
int lowIndex = i;
for (int j = data.length - 1; j 》 i; j--) {
if (data) {
lowIndex = j;
}
}
SortUtil.swap(data,i,lowIndex);
}
}
}
Shell排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class ShellSort implements SortUtil.Sort{
public void sort(int data) {
for(int i=data.length/2;i》2;i/=2){
for(int j=0;j《i;j++){
insertSort(data,j,i);
}
}
insertSort(data,0,1);
}
private void insertSort(int data, int start, int inc) {
int temp;
for(int i=start+inc;i《data.length;i+=inc){
for(int j=i;(j》=inc)&&(data);j-=inc){
SortUtil.swap(data,j,j-inc);
}
}
}
}
快速排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class QuickSort implements SortUtil.Sort{
public void sort(int data) {
quickSort(data,0,data.length-1);
}
private void quickSort(int data,int i,int j){
int pivotIndex=(i+j)/2;
//swap
SortUtil.swap(data,pivotIndex,j);
int k=partition(data,i-1,j,data);
SortUtil.swap(data,k,j);
if((k-i)》1) quickSort(data,i,k-1);
if((j-k)》1) quickSort(data,k+1,j);
}
private int partition(int data, int l, int r,int pivot) {
do{
while(data《pivot);
while((r!=0)&&data》pivot);
SortUtil.swap(data,l,r);
}
while(l《r);
SortUtil.swap(data,l,r);
return l;
}
}
改进后的快速排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class ImprovedQuickSort implements SortUtil.Sort {
private static int MAX_STACK_SIZE=4096;
private static int THRESHOLD=10;
public void sort(int data) {
int;
int top=-1;
int pivot;
int pivotIndex,l,r;
stack=0;
stack=data.length-1;
while(top》0){
int j=stack;
int i=stack;
pivotIndex=(i+j)/2;
pivot=data;
SortUtil.swap(data,pivotIndex,j);
//partition
l=i-1;
r=j;
do{
while(data《pivot);
while((r!=0)&&(data》pivot));
SortUtil.swap(data,l,r);
}
while(l《r);
SortUtil.swap(data,l,r);
SortUtil.swap(data,l,j);
if((l-i)》THRESHOLD){
stack=i;
stack=l-1;
}
if((j-l)》THRESHOLD){
stack=l+1;
stack=j;
}
}
//new InsertSort().sort(data);
insertSort(data);
}
private void insertSort(int data) {
int temp;
for(int i=1;i《data.length;i++){
for(int j=i;(j》0)&&(data);j--){
SortUtil.swap(data,j,j-1);
}
}
}
}
归并排序:
package org***t.util.algorithm.support;
import org***t.util.algorithm.SortUtil;
public class MergeSort implements SortUtil.Sort{
public void sort(int data) {
int;
mergeSort(data,temp,0,data.length-1);
}
private void mergeSort(int temp,int l,int r){
int mid=(l+r)/2;
if(l==r) return ;
mergeSort(data,temp,l,mid);
mergeSort(data,temp,mid+1,r);
for(int i=l;i《=r;i++){
temp;
}
int i1=l;
int i2=mid+1;
for(int cur=l;cur《=r;cur++){
if(i1==mid+1)
data;
else if(i2》r)
data;
else if(temp)
data;
else
data;
}
}
}
字符串的冒泡排序(一定要用c语言)
1、首先新建一个控制台应用程序。
2、接着准备整型的数组,后面排序好用。
3、然后进行for嵌套,注意内外嵌套的写法。
4、接着在内层嵌套中进行数据比较,然后进行排序。
5、接着就是对排序后的数组进行打印一下。
6、最后我们可以看到冒泡排序后的结果了。
字符串冒泡排序
#include 《iostream》
#include 《cstring》
#include 《string》
using namespace std;
int main()
{
char str;
for(int i = 0; i 《 5; i++)
cin 》》 str;
for(int i = 0; i 《 5; i++) {
for(int j = i+1; j 《 5; j++)
if(strcmp(str) == -1) {
char s;
strcpy(s,str);
s = ’\0’;
strcpy(str);
str = ’\0’;
strcpy(str,s);
str = ’\0’;
}
}
for(int i = 0; i 《 5; i++) {
//cout 《《 str 《《 endl;
printf("%s\n",str);
}
system("pause");
return 0;
}
从大到小的排序,如果要从小到大,就要修改if里面的1变为-1就行……
C语言字符串排序冒泡法
#include 《stdio.h》
#define N 5
void main()
{char str;
int i,j,t;
for(i=0;i《N;i++)
scanf("%c",&str);
for(i=0;i《N;i++)
for(j=i+1;j《N;j++)
if(str)
{
t=str;
str;
str=t;
}
for(i=0;i《N;i++)
{
printf("%c\n",str);
}
}
回车、空格都算是字符,要是输入超过数组大小,自动取前面的N个字符
C语言中 字符串怎么排序
直接借助冒泡排序,选择排序即可进行字符串的排序,但是需注意的是,字符串的比较需要借助strcmp函数完成,而字符串的复制需要借助strcpy函数完成。
示例代码如下:
#include "stdio.h"
#include "string.h"
void sort(char array,int n);
main(void)
{
char str;
int i,j,k,n;
printf("input n (n《=10):");
scanf("%d",&n);
printf("input %d string:",n);
for(i=0;i《n;i++)
gets(str); //输入N个字符串
sort(str,n); //对输入的字符串排序
printf("sort string:\n");
for(i=0;i《n;i++)
puts(str);
return 0;
}
void sort(char array,int n) //定义排序函数
{
char temp;
int i,j,k;
for(i=1;i《n-1;i++)
{
k=i;
for(j=i+1;j《n;j++)
if(strcmp(array)》0)
k=j;
if(k!=i)
{
strcpy(temp,array); //字符串交换顺序
strcpy(array);
strcpy(array,temp);
}
}
}
冒泡排序:输入n个字符串,对其进行冒泡排序,使其按从小到大顺序输出
以字符串指针数组为基础,进行冒泡排序,参考代码如下
#include《stdio.h》
#include《string.h》
#define N 5
#define L 200
void sort(char *p, int n)
{
int i,j;
char *t;
for(i=0;i《n-1;++i)
for(j=0;j《n-i-1;++j)
if(strcmp(p)》0){
t=p;
p;
p=t;
}
}
int main()
{
char str;
int i,j;
for(i=0;i《N;++i){
scanf("%s",str);
p;
}
sort(p,N);
printf("排序后:\n");
for(i=0;i《N;++i)
printf("%s\n",p);
return 0;
}
C语言用冒泡法对六个字符串按从小到大排
*(pstr+i)就是pstr数组的元素i,但这是指针数组,所以里面保存的是指针,可写为pstr。
上面三句就是地址交换。
*pstr是指针数组,pstr的每一个元素都是指针。还有字符串比较函数包含在 库函数 string.h中,要包含进去;定义指针时尽量把他赋值为空指针,不然野指针危害很大的。
根据你下面的输出情况,你是从每个字符,的首地址开始输出,所以上面交换的是地址,所以那三句改为
p=pstr;
pstr;
pstr=p;
就比较直观了
即把字符比较小的交换到前面去。就可得到你想要的结果。
改后的程序如下:
#include 《stdio.h》#include 《conio.h》
#include《string.h》
#define MAXLINE 20
int fun ( char *pstr){
int i, j ;
char *p=NULL;
for (i=0;i《5;i++)
{
for (j=i+1;j《6;j++)
{
if(strcmp(*(pstr+i),*(pstr+j))》 0)
{
p=pstr;
pstr;
pstr=p;
//等同于注释了的这三句
/* p=*(pstr+i) ;
*(pstr+i)=*(pstr+j);
*(pstr+j)=p ; */
}
}
}
}
int main(int argc,int *aggv)
{
int i;
char *pstr;
clrscr( );
for(i=0;i《6;i++)
pstr;
printf("\nEnter 6 string(1 string at each line): \n" );
for(i=0;i《6;i++)
scanf("%s",pstr);
fun(pstr);
printf("The strings after sorting:\n");
for(i=0;i《6;i++)
printf("%s\n", pstr);
return 0;
}